diff options
Diffstat (limited to 'src')
41 files changed, 1356 insertions, 842 deletions
diff --git a/src/char/char.c b/src/char/char.c index 54f6ca7d1..18269aeaf 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -139,6 +139,7 @@ char char_name_letters[1024] = ""; // list of letters/symbols allowed (or not) i 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 static int max_connect_user = -1; static int gm_allow_group = -1; @@ -1514,6 +1515,14 @@ static 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 @@ -2132,17 +2141,20 @@ static void char_mmo_char_send_ban_list(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 @@ -2409,12 +2421,8 @@ static 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 @@ -5848,6 +5856,7 @@ static bool char_config_read_player_name(const char *filename, const struct conf 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; } diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index 21b90ee50..ecdc83740 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -660,6 +660,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "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_AUTOSPELLLIST1", sizeof(struct PACKET_ZC_AUTOSPELLLIST1), SERVER_TYPE_MAP }, + { "PACKET_ZC_AUTOSPELLLIST2", sizeof(struct PACKET_ZC_AUTOSPELLLIST2), SERVER_TYPE_MAP }, { "PACKET_ZC_CAMERA_INFO", sizeof(struct PACKET_ZC_CAMERA_INFO), 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 }, @@ -677,6 +679,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { { "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_ITEM_PREVIEW", sizeof(struct PACKET_ZC_ITEM_PREVIEW), 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 }, diff --git a/src/common/Makefile.in b/src/common/Makefile.in index f65138521..67fe9c0d4 100644 --- a/src/common/Makefile.in +++ b/src/common/Makefile.in @@ -44,8 +44,6 @@ 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 \ @@ -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/console.c b/src/common/console.c index 5923775b7..a990d86b3 100644 --- a/src/common/console.c +++ b/src/common/console.c @@ -23,24 +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> diff --git a/src/common/core.c b/src/common/core.c index 9fd33c4e0..1ecf1df83 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -23,32 +23,29 @@ #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/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 @@ -83,7 +80,6 @@ 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. @@ -196,7 +192,6 @@ static void signals_init(void) compat_signal(SIGTRAP, SIG_DFL); #endif } -#endif /** * Warns the user if executed as superuser (root) @@ -250,10 +245,8 @@ static bool usercheck(void) static void core_defaults(void) { nullpo_defaults(); -#ifndef MINICORE hpm_defaults(); HCache_defaults(); -#endif sysinfo_defaults(); console_defaults(); strlib_defaults(); @@ -262,7 +255,6 @@ static 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(); @@ -272,7 +264,6 @@ static void core_defaults(void) rnd_defaults(); md5_defaults(); thread_defaults(); -#endif } /** @@ -280,12 +271,8 @@ static void core_defaults(void) */ 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 } /** @@ -446,15 +433,9 @@ static int cmdline_exec(int argc, char **argv, unsigned int options) */ 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(); } @@ -521,10 +502,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(); @@ -567,7 +544,6 @@ int main(int argc, char **argv) thread->final(); ers_final(); rnd->final(); -#endif cmdline->final(); //sysinfo->final(); Called by iMalloc->final() diff --git a/src/common/memmgr.h b/src/common/memmgr.h index 90c35f244..c7147cc5e 100644 --- a/src/common/memmgr.h +++ b/src/common/memmgr.h @@ -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 d6946cecc..9bcf82cc7 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -1331,7 +1331,8 @@ enum questinfo_type { QINFO_ITEM, QINFO_HOMUN_LEVEL, QINFO_HOMUN_TYPE, - QINFO_QUEST + QINFO_QUEST, + QINFO_MERCENARY_CLASS }; /* packet size constant for itemlist */ diff --git a/src/common/socket.c b/src/common/socket.c index 290c7a1b3..fd86414d6 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -301,10 +301,8 @@ static uint32 send_shortlist_set[(FD_SETSIZE+31)/32];// to know if specific fd's static int create_session(int fd, RecvFunc func_recv, SendFunc func_send, ParseFunc func_parse); -#ifndef MINICORE - static int ip_rules = 1; - static int connect_check(uint32 ip); -#endif // MINICORE +static int ip_rules = 1; +static int connect_check(uint32 ip); static const char *error_msg(void) { @@ -556,12 +554,10 @@ static 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 @@ -1065,9 +1061,6 @@ static int do_sockets(int next) return 0; } -////////////////////////////// -#ifndef MINICORE -////////////////////////////// // IP rules and DDoS protection struct connect_history { @@ -1326,11 +1319,6 @@ static bool access_list_add(struct config_setting_t *setting, const char *list_n return true; } -////////////////////////////// -#endif // MINICORE -////////////////////////////// - -#ifndef MINICORE /** * Reads 'socket_configuration/ip_rules' and initializes required variables. * @@ -1387,9 +1375,7 @@ static bool socket_config_read_iprules(const char *filename, struct config_t *co return true; } -#endif // ! MINICORE -#ifndef MINICORE /** * Reads 'socket_configuration/ddos' and initializes required variables. * @@ -1419,7 +1405,6 @@ static bool socket_config_read_ddos(const char *filename, struct config_t *confi return true; } -#endif // ! MINICORE /** * Reads 'socket_configuration' and initializes required variables. @@ -1464,7 +1449,6 @@ static 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); @@ -1477,7 +1461,6 @@ static 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) { @@ -1496,12 +1479,10 @@ static bool socket_config_read(const char *filename, bool imported) 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]) @@ -1686,10 +1667,8 @@ static 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); @@ -1729,12 +1708,10 @@ static 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); } diff --git a/src/config/const.h b/src/config/const.h index 3b35e354e..4767b5721 100644 --- a/src/config/const.h +++ b/src/config/const.h @@ -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/map/achievement.c b/src/map/achievement.c index 68fc8a983..7148acae8 100644 --- a/src/map/achievement.c +++ b/src/map/achievement.c @@ -772,6 +772,10 @@ static void achievement_validate_refine(struct map_session_data *sd, unsigned in 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, diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 0fdbe107f..236975b32 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1776,18 +1776,7 @@ ACMD(bodystyle) memset(atcmd_output, '\0', sizeof(atcmd_output)); - if ((sd->job & MAPID_THIRDMASK) != MAPID_GUILLOTINE_CROSS - && (sd->job & MAPID_THIRDMASK) != MAPID_GENETIC - && (sd->job & MAPID_THIRDMASK) != MAPID_MECHANIC - && (sd->job & MAPID_THIRDMASK) != MAPID_ROYAL_GUARD - && (sd->job & MAPID_THIRDMASK) != MAPID_ARCH_BISHOP - && (sd->job & MAPID_THIRDMASK) != MAPID_RANGER - && (sd->job & MAPID_THIRDMASK) != MAPID_WARLOCK - && (sd->job & MAPID_THIRDMASK) != MAPID_SHADOW_CHASER - && (sd->job & MAPID_THIRDMASK) != MAPID_MINSTRELWANDERER - && (sd->job & MAPID_THIRDMASK) != MAPID_SORCERER - && (sd->job & MAPID_THIRDMASK) != MAPID_SURA - ) { + if (!pc->has_second_costume(sd)) { clif->message(fd, msg_fd(fd, 35)); // This job has no alternate body styles. return false; } diff --git a/src/map/battle.c b/src/map/battle.c index fceb30be1..44241bf23 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4339,6 +4339,8 @@ static struct Damage battle_calc_misc_attack(struct block_list *src, struct bloc } break; } + + battle->reflect_trap(target, src, &md, skill_id); return md; } @@ -6008,6 +6010,37 @@ static void battle_reflect_damage(struct block_list *target, struct block_list * #undef NORMALIZE_RDAMAGE } +/** + * 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; @@ -7325,6 +7358,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, }, @@ -7371,6 +7405,8 @@ static const struct battle_data { { "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, }, }; static bool battle_set_value_sub(int index, int value) @@ -7614,6 +7650,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 9f5207e95..02536e4a1 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -506,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; @@ -570,6 +571,9 @@ struct Battle_Config { int feature_enable_attendance_system; int feature_attendance_endtime; + + int min_item_buy_price; + int min_item_sell_price; }; /* criteria for battle_config.idletime_critera */ @@ -636,6 +640,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/channel.c b/src/map/channel.c index 73398c152..3ba56b100 100644 --- a/src/map/channel.c +++ b/src/map/channel.c @@ -276,7 +276,9 @@ static void channel_send(struct channel_data *chan, struct map_session_data *sd, 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; diff --git a/src/map/clif.c b/src/map/clif.c index 1e9844f14..44cefcd7e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -7503,44 +7503,43 @@ static void clif_pet_food(struct map_session_data *sd, int foodid, int fail) /// 01cd { <skill id>.L }*7 static void clif_autospell(struct map_session_data *sd, uint16 skill_lv) { - int fd; - nullpo_retv(sd); - fd=sd->fd; - WFIFOHEAD(fd,packet_len(0x1cd)); - WFIFOW(fd, 0)=0x1cd; + int fd = sd->fd; +#if 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 = 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_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; } @@ -8872,7 +8871,7 @@ static void clif_specialeffect_value(struct block_list *bl, int effect_id, int n /// @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 +#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 nullpo_retv(bl); struct PACKET_ZC_REMOVE_EFFECT p; @@ -8891,7 +8890,7 @@ static void clif_removeSpecialEffect(struct block_list *bl, int effectId, enum s static void clif_removeSpecialEffect_single(struct block_list *bl, int effectId, struct block_list *targetBl) { -#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 +#if PACKETVER_MAIN_NUM >= 20181002 || PACKETVER_RE_NUM >= 20181002 || PACKETVER_ZERO_NUM >= 20181010 nullpo_retv(bl); nullpo_retv(targetBl); @@ -9672,7 +9671,9 @@ static void clif_msgtable_str_color(struct map_session_data *sd, enum clif_messa 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; @@ -12342,7 +12343,7 @@ 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 @@ -16872,7 +16873,11 @@ static 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 >= 20150513 +#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 @@ -16961,7 +16966,11 @@ static void clif_quest_add(struct map_session_data *sd, struct quest *qd) monster = mob->db(qi->objectives[i].mob); -#if PACKETVER >= 20150513 +#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 @@ -17022,7 +17031,10 @@ static void clif_quest_update_objective(struct map_session_data *sd, struct ques real_len += sizeof(packet->objectives[i]); packet->objectives[i].questID = qd->quest_id; -#if PACKETVER >= 20150513 +#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; @@ -18889,9 +18901,9 @@ static void clif_parse_dull(int fd, struct map_session_data *sd) packet_len = RFIFOW(fd, 2); } if (sd) { - ShowWarning("Unhandled packet 0x%04d (length %d), %s session #%d, %d/%d (AID/CID)\n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id); + 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%04d (length %d), session #%d\n", cmd, packet_len, fd); + ShowWarning("Unhandled packet 0x%04X (length %d), session #%d\n", (uint32)cmd, packet_len, fd); } return; } @@ -21925,6 +21937,7 @@ static void clif_parse_memorial_dungeon_command(int fd, struct map_session_data static void clif_camera_showWindow(struct map_session_data *sd) { #if PACKETVER >= 20160525 + nullpo_retv(sd); struct PACKET_ZC_CAMERA_INFO p; p.packetType = 0xa78; p.action = 1; @@ -21938,6 +21951,7 @@ static void clif_camera_showWindow(struct map_session_data *sd) 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 = 0xa78; p.action = 0; @@ -21948,6 +21962,26 @@ static void clif_camera_change(struct map_session_data *sd, float range, float r #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 < MAX_INVENTORY); + + struct PACKET_ZC_ITEM_PREVIEW p; + p.packetType = itemPreview; + 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 +} + /*========================================== * Main client packet processing function *------------------------------------------*/ @@ -23114,6 +23148,7 @@ void clif_defaults(void) clif->camera_showWindow = clif_camera_showWindow; clif->camera_change = clif_camera_change; + clif->item_preview = clif_item_preview; // -- Pet Evolution clif->pPetEvolution = clif_parse_pet_evolution; diff --git a/src/map/clif.h b/src/map/clif.h index 13c34c77d..b76c5ed70 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -1554,6 +1554,7 @@ struct clif_interface { 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 (*item_preview) (struct map_session_data *sd, int n); }; #ifdef HERCULES_CORE diff --git a/src/map/map.c b/src/map/map.c index 343f219b8..a352d34b0 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -635,6 +635,18 @@ static int map_foreachinmap(int (*func)(struct block_list*, va_list), int16 m, i 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].bxs, map->list[m].bys, 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. @@ -6901,6 +6913,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; diff --git a/src/map/map.h b/src/map/map.h index d50666d4b..0e38bdb13 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -815,6 +815,7 @@ struct questinfo { struct s_homunculus homunculus; int homunculus_type; VECTOR_DECL(struct questinfo_qreq) quest_requirement; + int mercenary_class; }; @@ -1292,6 +1293,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,...); diff --git a/src/map/messages_main.h b/src/map/messages_main.h index e56eb42a1..4bef783ec 100644 --- a/src/map/messages_main.h +++ b/src/map/messages_main.h @@ -3,6 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2018 Hercules Dev Team + * Copyright (C) 2018 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 @@ -23,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20181002 +Latest version: 20181107 */ enum clif_messages { @@ -21325,6 +21326,92 @@ 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 }; #endif /* MAP_MESSAGES_MAIN_H */ diff --git a/src/map/messages_re.h b/src/map/messages_re.h index 474030df1..ee1a05b93 100644 --- a/src/map/messages_re.h +++ b/src/map/messages_re.h @@ -3,6 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2018 Hercules Dev Team + * Copyright (C) 2018 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 @@ -23,7 +24,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20181002 +Latest version: 20181107 */ enum clif_messages { @@ -20804,6 +20805,92 @@ 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 }; #endif /* MAP_MESSAGES_RE_H */ diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h index c562bb07c..dc2f87a76 100644 --- a/src/map/messages_zero.h +++ b/src/map/messages_zero.h @@ -23,7 +23,7 @@ /* This file is autogenerated, please do not commit manual changes -Latest version: 20180919 +Latest version: 20181024 */ enum clif_messages { @@ -13926,9 +13926,11 @@ 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 latest +/*20171018 to 20180928 해당 태그는 이름으로 사용하실 수 없습니다. Name with this tag cannot be used. +20181010 to latest + 해당 내용은 이름으로 사용하실 수 없습니다. */ MSG_ID_AFC = 0xafc, /*20171018 to latest @@ -17420,6 +17422,48 @@ 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 }; #endif /* MAP_MESSAGES_ZERO_H */ diff --git a/src/map/packets.h b/src/map/packets.h index dc610ce2a..09c061920 100644 --- a/src/map/packets.h +++ b/src/map/packets.h @@ -4355,4 +4355,50 @@ packet(0x96e,-1,clif->ackmergeitems); // changed packet sizes #endif +// 2018-10-10_2aRagexe_zero +#if PACKETVER_ZERO_NUM >= 20181010 +// new packets + packet(0x0b10,10,clif->pDull/*,XXX*/); + packet(0x0b11,4,clif->pDull/*,XXX*/); +// changed packet sizes +#endif + +// 2018-10-17bRagexe +#if PACKETVER_MAIN_NUM >= 20181017 +// new packets + packet(0x0b12,2,clif->pDull/*,XXX*/); + packet(0x0b13,40); // ZC_ITEM_PREVIEW +// changed packet sizes +#endif + +// 2018-10-17bRagexeRE +#if PACKETVER_RE_NUM >= 20181017 +// new packets + packet(0x0b12,2,clif->pDull/*,XXX*/); + packet(0x0b13,48); // ZC_ITEM_PREVIEW +// changed packet sizes +#endif + +// 2018-10-24_2aRagexe_zero +#if PACKETVER_ZERO_NUM >= 20181024 +// new packets + packet(0x0b12,2,clif->pDull/*,XXX*/); + packet(0x0b13,40); // ZC_ITEM_PREVIEW +// changed packet sizes +#endif + +#ifndef PACKETVER_ZERO +// 2018-10-31aRagexe, 2018-10-31cRagexeRE +#if PACKETVER >= 20181031 +// new packets + packet(0x0b14,2,clif->pDull/*,XXX*/); + packet(0x0b15,7,clif->pDull/*,XXX*/); + packet(0x0b16,2,clif->pDull/*,XXX*/); + packet(0x0b17,3,clif->pDull/*,XXX*/); + packet(0x0b18,4,clif->pDull/*,XXX*/); + packet(0x0b19,2,clif->pDull/*,XXX*/); +// changed packet sizes +#endif +#endif // PACKETVER_ZERO + #endif /* MAP_PACKETS_H */ diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h index 03ece5d27..48a3c5d2b 100644 --- a/src/map/packets_keys_main.h +++ b/src/map/packets_keys_main.h @@ -3,6 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2018 Hercules Dev Team + * Copyright (C) 2018 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 @@ -33,71 +34,163 @@ #if PACKETVER == 20101123 || \ PACKETVER == 20101124 || \ PACKETVER == 20101126 - packetKeys(0x49357D72,0x22C370A1,0x5F836591); + 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 +#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 + packetKeys(0x00000000,0x00000000,0x00000000); #endif // 2010-11-30aRagexe #if PACKETVER == 20101130 - packetKeys(0x3726593C,0x0EFD5EE8,0x79036DF9); + packetKeys(0x3726593c,0x0efd5ee8,0x79036df9); #endif // 2010-12-07bRagexe #if PACKETVER == 20101207 - packetKeys(0x66111112,0x2B7B53AA,0x04E76DF8); + packetKeys(0x66111112,0x2b7b53aa,0x04e76df8); #endif // 2010-12-14aRagexe #if PACKETVER == 20101214 - packetKeys(0x5E535D06,0x4E297F0E,0x400B6AD8); + packetKeys(0x5e535d06,0x4e297f0e,0x400b6ad8); #endif // 2010-12-21aRagexe #if PACKETVER == 20101221 - packetKeys(0x0448466A,0x41554AC9,0x5B4710B2); + packetKeys(0x0448466a,0x41554ac9,0x5b4710b2); #endif // 2010-12-28aRagexe #if PACKETVER == 20101228 - packetKeys(0x50C638A5,0x4BF86B20,0x480C3746); + packetKeys(0x50c638a5,0x4bf86b20,0x480c3746); #endif // 2011-01-04aRagexe #if PACKETVER == 20110104 - packetKeys(0x55DB401F,0x047D4E02,0x6D8F2EA3); + packetKeys(0x55db401f,0x047d4e02,0x6d8f2ea3); #endif // 2011-01-11aRagexe #if PACKETVER == 20110111 - packetKeys(0x2D5F6302,0x2A361CD6,0x39D661D6); + packetKeys(0x2d5f6302,0x2a361cd6,0x39d661d6); #endif // 2011-01-18aRagexe #if PACKETVER == 20110118 - packetKeys(0x3C777D2D,0x00541A1D,0x5E0053A2); + 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); + packetKeys(0x6bb84bb0,0x4c004382,0x10ae3260); #endif // 2011-01-31bRagexe, 2011-02-01aRagexe #if PACKETVER == 20110131 || \ PACKETVER == 20110201 - packetKeys(0x68871E62,0x60D17266,0x74726DAA); + packetKeys(0x68871e62,0x60d17266,0x74726daa); #endif // 2011-02-08aRagexe, 2011-02-10aRagexe, 2011-02-10bRagexe #if PACKETVER == 20110208 || \ PACKETVER == 20110210 - packetKeys(0x72BA4E9D,0x281E1DF1,0x208255AA); + packetKeys(0x72ba4e9d,0x281e1df1,0x208255aa); #endif // 2011-02-15aRagexe #if PACKETVER == 20110215 - packetKeys(0x1B174D76,0x32005014,0x7B8B72D5); + packetKeys(0x1b174d76,0x32005014,0x7b8b72d5); #endif // 2011-02-22aRagexe, 2011-02-23aRagexe, 2011-02-23bRagexe, 2011-02-24aRagexe, 2011-02-25aRagexe, 2011-02-25bRagexe @@ -105,70 +198,70 @@ PACKETVER == 20110223 || \ PACKETVER == 20110224 || \ PACKETVER == 20110225 - packetKeys(0x48F73B56,0x155F7D66,0x44AB57CE); + packetKeys(0x48f73b56,0x155f7d66,0x44ab57ce); #endif // 2011-02-28aRagexe #if PACKETVER == 20110228 - packetKeys(0x26385EBF,0x7A8C7534,0x60AE2C34); + 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); + packetKeys(0x003f1b20,0x7a1e12a3,0x34994aad); #endif // 2011-03-15aRagexe, 2011-03-16aRagexe #if PACKETVER == 20110315 || \ PACKETVER == 20110316 - packetKeys(0x62967D7D,0x34833D1A,0x26D45ECA); + packetKeys(0x62967d7d,0x34833d1a,0x26d45eca); #endif // 2011-03-22aRagexe #if PACKETVER == 20110322 - packetKeys(0x5870617C,0x638D5376,0x739F4817); + packetKeys(0x5870617c,0x638d5376,0x739f4817); #endif // 2011-03-29aRagexe, 2011-03-30aRagexe #if PACKETVER == 20110329 || \ PACKETVER == 20110330 - packetKeys(0x06900BB7,0x45DB687B,0x197B017B); + packetKeys(0x06900bb7,0x45db687b,0x197b017b); #endif // 2011-04-05aRagexe #if PACKETVER == 20110405 - packetKeys(0x248D5C37,0x1C6A1B37,0x1F644FDB); + packetKeys(0x248d5c37,0x1c6a1b37,0x1f644fdb); #endif // 2011-04-12bRagexe #if PACKETVER == 20110412 - packetKeys(0x3DE86BFC,0x0DD47F80,0x42481C9B); + packetKeys(0x3de86bfc,0x0dd47f80,0x42481c9b); #endif // 2011-04-19aRagexe #if PACKETVER == 20110419 - packetKeys(0x26073204,0x62013A51,0x22AC58E0); + packetKeys(0x26073204,0x62013a51,0x22ac58e0); #endif // 2011-04-26aRagexe #if PACKETVER == 20110426 - packetKeys(0x392813F9,0x09905054,0x40DB732E); + packetKeys(0x392813f9,0x09905054,0x40db732e); #endif // 2011-05-03aRagexe #if PACKETVER == 20110503 - packetKeys(0x28BE32EE,0x1D506FCB,0x63832421); + packetKeys(0x28be32ee,0x1d506fcb,0x63832421); #endif // 2011-05-11aRagexe #if PACKETVER == 20110511 - packetKeys(0x6A715733,0x3C5C0D74,0x408A48EC); + packetKeys(0x6a715733,0x3c5c0d74,0x408a48ec); #endif // 2011-05-17aRagexe #if PACKETVER == 20110517 - packetKeys(0x07FE0C72,0x46766BAD,0x5EB5126A); + packetKeys(0x07fe0c72,0x46766bad,0x5eb5126a); #endif // 2011-05-23aRagexe, 2011-05-26bRagexe @@ -179,323 +272,323 @@ // 2011-05-31aRagexe #if PACKETVER == 20110531 - packetKeys(0x5ABA2C7C,0x3CD22073,0x78953988); + 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); + packetKeys(0x76b0426c,0x0dd74deb,0x1f92228e); #endif // 2011-06-14aRagexe #if PACKETVER == 20110614 - packetKeys(0x5749027B,0x71710972,0x5B096475); + packetKeys(0x5749027b,0x71710972,0x5b096475); #endif // 2011-06-20aRagexe #if PACKETVER == 20110620 - packetKeys(0x3A1760D4,0x254E0DF9,0x440E2357); + packetKeys(0x3a1760d4,0x254e0df9,0x440e2357); #endif // 2011-06-27aRagexe #if PACKETVER == 20110627 - packetKeys(0x3EFC29BD,0x699E4B11,0x7B900A13); + packetKeys(0x3efc29bd,0x699e4b11,0x7b900a13); #endif // 2011-07-05aRagexe #if PACKETVER == 20110705 - packetKeys(0x48801A5E,0x68FC7726,0x081D7F6E); + packetKeys(0x48801a5e,0x68fc7726,0x081d7f6e); #endif // 2011-07-11bRagexe, 2011-07-13aRagexe, 2011-07-13bRagexe #if PACKETVER == 20110711 || \ PACKETVER == 20110713 - packetKeys(0x489C544B,0x33BA1C25,0x2DE66E4E); + packetKeys(0x489c544b,0x33ba1c25,0x2de66e4e); #endif // 2011-07-18aRagexe #if PACKETVER == 20110718 - packetKeys(0x08464674,0x1EEB3BD5,0x33395199); + packetKeys(0x08464674,0x1eeb3bd5,0x33395199); #endif // 2011-07-26aRagexe #if PACKETVER == 20110726 - packetKeys(0x41E5730B,0x119C6C11,0x5356524A); + packetKeys(0x41e5730b,0x119c6c11,0x5356524a); #endif // 2011-08-02aRagexe #if PACKETVER == 20110802 - packetKeys(0x607C08A1,0x65B20528,0x360571E9); + packetKeys(0x607c08a1,0x65b20528,0x360571e9); #endif // 2011-08-09aRagexe #if PACKETVER == 20110809 - packetKeys(0x742A559A,0x047F425D,0x5C8C2CA0); + 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); + 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); + 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); + 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); + packetKeys(0x350124ec,0x39a14595,0x0de56125); #endif // 2011-09-20aRagexe, 2011-09-20aRagexeRE, 2011-09-20aRagexeRE2 #if PACKETVER == 20110920 - packetKeys(0x79C91A12,0x20450CC0,0x584B2A38); + 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); + 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); + 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); + 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); + packetKeys(0x357d55dc,0x5a8d759f,0x245c30f5); #endif // 2011-10-25aRagexe, 2011-10-25aRagexeRE #if PACKETVER == 20111025 - packetKeys(0x50AE1A63,0x3CE579B5,0x29C10406); + 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); + 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); + 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); + packetKeys(0x419d0db0,0x74916bf4,0x027371b4); #endif // 2011-11-22aRagexe, 2011-11-22aRagexeRE, 2011-11-23aRagexe #if PACKETVER == 20111122 || \ PACKETVER == 20111123 - packetKeys(0x3B550F07,0x1F666C7C,0x60304EF5); + packetKeys(0x3b550f07,0x1f666c7c,0x60304ef5); #endif // 2011-12-07aRagexe, 2011-12-07aRagexeRE #if PACKETVER == 20111207 - packetKeys(0x2A610886,0x3E09165E,0x57C11888); + 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); + packetKeys(0x5151306b,0x7ae32886,0x53060628); #endif // 2011-12-20bRagexe, 2011-12-20bRagexeRE #if PACKETVER == 20111220 - packetKeys(0x05D53871,0x7D0027B4,0x29975333); + 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); + 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); + packetKeys(0x262034a1,0x674542a5,0x73a50ba5); #endif // 2012-01-10aRagexeRE, 2012-01-10bRagexe #if PACKETVER == 20120110 - packetKeys(0x2B412AFC,0x4FF94487,0x6705339D); + packetKeys(0x2b412afc,0x4ff94487,0x6705339d); #endif // 2012-01-17aRagexe, 2012-01-17aRagexeRE, 2012-01-18aRagexe #if PACKETVER == 20120117 || \ PACKETVER == 20120118 - packetKeys(0x24E32C2E,0x48DD17A5,0x64F8771A); + packetKeys(0x24e32c2e,0x48dd17a5,0x64f8771a); #endif // 2012-01-20aRagexe, 2012-01-20aRagexeRE #if PACKETVER == 20120120 - packetKeys(0x504345D0,0x3D427B1B,0x794C2DCC); + 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); + 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); + packetKeys(0x1d373f5d,0x5acd604d,0x1c4d7c4d); #endif // 2012-02-14bRagexe, 2012-02-14bRagexeRE, 2012-02-15aRagexe #if PACKETVER == 20120214 || \ PACKETVER == 20120215 - packetKeys(0x7A255EFA,0x30977276,0x2D4A0448); + 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); + 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); + 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); + 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); + packetKeys(0x689c1729,0x11812639,0x60f82967); #endif // 2012-03-20aRagexe, 2012-03-20aRagexeRE, 2012-03-21aRagexeRE #if PACKETVER == 20120320 || \ PACKETVER == 20120321 - packetKeys(0x21F9683F,0x710C5CA5,0x1FD910E9); + 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); + packetKeys(0x75b8553b,0x37f20b12,0x385c2b40); #endif // 2012-04-04aRagexe, 2012-04-04aRagexeRE #if PACKETVER == 20120404 - packetKeys(0x0036310C,0x2DCD0BED,0x1EE62A78); + packetKeys(0x0036310c,0x2dcd0bed,0x1ee62a78); #endif // 2012-04-10aRagexe, 2012-04-10aRagexeRE #if PACKETVER == 20120410 - packetKeys(0x01581359,0x452D6FFA,0x6AFB6E2E); + packetKeys(0x01581359,0x452d6ffa,0x6afb6e2e); #endif // 2012-04-17aRagexe, 2012-04-17aRagexeRE, 2012-04-18aRagexeRE #if PACKETVER == 20120417 || \ PACKETVER == 20120418 - packetKeys(0x01540E48,0x13041224,0x31247924); + packetKeys(0x01540e48,0x13041224,0x31247924); #endif // 2012-04-24aRagexe, 2012-04-24aRagexeRE #if PACKETVER == 20120424 - packetKeys(0x411D1DBB,0x4CBA4848,0x1A432FC4); + 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); + 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); + packetKeys(0x16cf3301,0x1f472b9b,0x0b4a3cd2); #endif // 2012-05-15aRagexe, 2012-05-15aRagexeRE #if PACKETVER == 20120515 - packetKeys(0x4A715EF9,0x79103E4F,0x405C1238); + 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); + packetKeys(0x70eb4ccb,0x0487713c,0x398d4b08); #endif // 2012-05-29bRagexe, 2012-05-29bRagexeRE #if PACKETVER == 20120529 - packetKeys(0x53415DDE,0x34953E16,0x27623DF2); + 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); + packetKeys(0x68ca3080,0x31b74bdd,0x505208f1); #endif // 2012-06-12aRagexe, 2012-06-12aRagexeRE #if PACKETVER == 20120612 - packetKeys(0x32E45D64,0x35643564,0x35643564); + packetKeys(0x32e45d64,0x35643564,0x35643564); #endif // 2012-06-18aRagexe, 2012-06-18aRagexeRE #if PACKETVER == 20120618 - packetKeys(0x261F261F,0x261F261F,0x261F261F); + 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); + packetKeys(0x02277e66,0x045723f1,0x7107392c); #endif // 2012-07-02aRagexe, 2012-07-02aRagexeRE #if PACKETVER == 20120702 - packetKeys(0x25733B31,0x53486CFD,0x398649BD); + 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); + packetKeys(0x0e8b7afb,0x6930362d,0x42d33a57); #endif // 2012-07-16aRagexe, 2012-07-16aRagexeRE @@ -505,487 +598,453 @@ // 2012-07-24aRagexe, 2012-07-24aRagexeRE #if PACKETVER == 20120724 - packetKeys(0x783D5BC6,0x3AAC2176,0x66616F02); + packetKeys(0x783d5bc6,0x3aac2176,0x66616f02); #endif // 2012-08-01aRagexe, 2012-08-01aRagexeRE, 2012-08-01bRagexe, 2012-08-01bRagexeRE #if PACKETVER == 20120801 - packetKeys(0x71FB6768,0x5843166B,0x6CB445C6); + 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); + packetKeys(0x5d5068bb,0x36732065,0x47cf7367); #endif // 2012-08-14aRagexe, 2012-08-14aRagexeRE, 2012-08-14bRagexe, 2012-08-14bRagexeRE #if PACKETVER == 20120814 - packetKeys(0x203E21BD,0x047459FB,0x56AF5A97); + 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); + packetKeys(0x06a92e7b,0x3d324f29,0x5fd63004); #endif // 2012-08-30aRagexe, 2012-08-30aRagexeRE, 2012-08-30bRagexeRE #if PACKETVER == 20120830 - packetKeys(0x0AF1363D,0x4AB33E3B,0x48421DBE); + packetKeys(0x0af1363d,0x4ab33e3b,0x48421dbe); #endif // 2012-09-05aRagexe, 2012-09-05aRagexeRE #if PACKETVER == 20120905 - packetKeys(0x04F50D80,0x092F5C4D,0x29BF3DCF); + packetKeys(0x04f50d80,0x092f5c4d,0x29bf3dcf); #endif // 2012-09-11aRagexe, 2012-09-11aRagexeRE #if PACKETVER == 20120911 - packetKeys(0x1F3D1145,0x02DB3C32,0x4BE34C49); + packetKeys(0x1f3d1145,0x02db3c32,0x4be34c49); #endif // 2012-09-19aRagexe, 2012-09-19aRagexeRE #if PACKETVER == 20120919 - packetKeys(0x72E00F24,0x4EA02D80,0x7C803480); + 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); + 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); + packetKeys(0x169733e2,0x4c4640dc,0x31636531); #endif // 2012-10-17aRagexe, 2012-10-17aRagexeRE, 2012-10-17bRagexe, 2012-10-17bRagexeRE #if PACKETVER == 20121017 - packetKeys(0x340C0C31,0x33205EA8,0x55964BFF); + packetKeys(0x340c0c31,0x33205ea8,0x55964bff); #endif // 2012-10-24aRagexe, 2012-10-24aRagexeRE #if PACKETVER == 20121024 - packetKeys(0x6166335C,0x45393483,0x7EDC5478); + packetKeys(0x6166335c,0x45393483,0x7edc5478); #endif // 2012-10-31aRagexe, 2012-10-31aRagexeRE #if PACKETVER == 20121031 - packetKeys(0x66EB7ADB,0x242864BB,0x354A4CDE); + packetKeys(0x66eb7adb,0x242864bb,0x354a4cde); #endif // 2012-11-07aRagexe, 2012-11-07aRagexeRE #if PACKETVER == 20121107 - packetKeys(0x49967892,0x48025276,0x1E192CA3); + packetKeys(0x49967892,0x48025276,0x1e192ca3); #endif // 2012-11-14aRagexe, 2012-11-14aRagexeRE #if PACKETVER == 20121114 - packetKeys(0x3473545C,0x2706445C,0x79647616); + packetKeys(0x3473545c,0x2706445c,0x79647616); #endif // 2012-11-21aRagexe, 2012-11-21aRagexeRE #if PACKETVER == 20121121 - packetKeys(0x6EB54B0B,0x3F2A6BE5,0x0B2866E6); + packetKeys(0x6eb54b0b,0x3f2a6be5,0x0b2866e6); #endif // 2012-11-28aRagexe, 2012-11-28aRagexeRE #if PACKETVER == 20121128 - packetKeys(0x146D4D5E,0x5C3D161B,0x759250B8); + packetKeys(0x146d4d5e,0x5c3d161b,0x759250b8); #endif // 2012-12-05aRagexe, 2012-12-05aRagexeRE, 2012-12-05bRagexe, 2012-12-05bRagexeRE #if PACKETVER == 20121205 - packetKeys(0x218C64B6,0x4EFE17AE,0x27EA5E74); + 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); + packetKeys(0x7f8026f0,0x32ee2a4b,0x73746c0e); #endif // 2012-12-18aRagexe, 2012-12-18aRagexeRE, 2012-12-18bRagexe, 2012-12-18bRagexeRE #if PACKETVER == 20121218 - packetKeys(0x6A5450A2,0x4322498A,0x2C6574FB); + packetKeys(0x6a5450a2,0x4322498a,0x2c6574fb); #endif // 2012-12-27aRagexe, 2012-12-27aRagexeRE #if PACKETVER == 20121227 - packetKeys(0x71773018,0x36A14EEB,0x28CD5A20); + packetKeys(0x71773018,0x36a14eeb,0x28cd5a20); #endif // 2013-01-03aRagexe, 2013-01-03aRagexeRE, 2013-01-07aRagexe #if PACKETVER == 20130103 || \ PACKETVER == 20130107 - packetKeys(0x1E1A559A,0x199A799A,0x799A799A); + packetKeys(0x1e1a559a,0x199a799a,0x799a799a); #endif // 2013-01-09aRagexe, 2013-01-09aRagexeRE #if PACKETVER == 20130109 - packetKeys(0x6435360F,0x0A283678,0x64A04AC7); + 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); + packetKeys(0x273c25cd,0x06aa48af,0x45a01bd4); #endif // 2013-01-21aRagexe, 2013-01-21aRagexeRE #if PACKETVER == 20130121 - packetKeys(0x5DD874B0,0x7D98233F,0x28FF5566); + packetKeys(0x5dd874b0,0x7d98233f,0x28ff5566); #endif // 2013-01-30aRagexe, 2013-01-30aRagexeRE #if PACKETVER == 20130130 - packetKeys(0x1EA57961,0x27786856,0x30301FA0); + packetKeys(0x1ea57961,0x27786856,0x30301fa0); #endif // 2013-02-06aRagexe, 2013-02-06aRagexeRE #if PACKETVER == 20130206 - packetKeys(0x1D8F4227,0x675812AA,0x29132929); + packetKeys(0x1d8f4227,0x675812aa,0x29132929); #endif // 2013-02-15aRagexe, 2013-02-15aRagexeRE, 2013-02-15bRagexe #if PACKETVER == 20130215 - packetKeys(0x69FB1C38,0x7D386860,0x62805311); + packetKeys(0x69fb1c38,0x7d386860,0x62805311); #endif // 2013-02-20aRagexe, 2013-02-20bRagexeRE #if PACKETVER == 20130220 - packetKeys(0x0D555256,0x28C26722,0x72220A22); + packetKeys(0x0d555256,0x28c26722,0x72220a22); #endif // 2013-02-27aRagexe, 2013-02-27aRagexeRE #if PACKETVER == 20130227 - packetKeys(0x44F86842,0x43786A7A,0x71654528); + packetKeys(0x44f86842,0x43786a7a,0x71654528); #endif // 2013-03-06aRagexe, 2013-03-06aRagexeRE, 2013-03-06bRagexeRE #if PACKETVER == 20130306 - packetKeys(0x7E274326,0x7D182DF2,0x4FC27DFA); + packetKeys(0x7e274326,0x7d182df2,0x4fc27dfa); #endif // 2013-03-13aRagexe, 2013-03-13aRagexeRE, 2013-03-13bRagexeRE, 2013-03-13cRagexeRE #if PACKETVER == 20130313 - packetKeys(0x560021C3,0x6A5D110F,0x52BD40A5); + packetKeys(0x560021c3,0x6a5d110f,0x52bd40a5); #endif // 2013-03-20bRagexeRE, 2013-03-20cRagexeRE, 2013-03-20dRagexe, 2013-03-20eRagexe #if PACKETVER == 20130320 - packetKeys(0x3F094C49,0x55F86C1E,0x58AA359A); + packetKeys(0x3f094c49,0x55f86c1e,0x58aa359a); #endif // 2013-03-27bRagexe, 2013-03-27bRagexeRE #if PACKETVER == 20130327 - packetKeys(0x114B1BA0,0x2C4F0AE2,0x5FA1183F); + packetKeys(0x114b1ba0,0x2c4f0ae2,0x5fa1183f); #endif // 2013-04-03aRagexe, 2013-04-03aRagexeRE #if PACKETVER == 20130403 - packetKeys(0x424A43AE,0x4A9D5EBE,0x4B3518A9); + packetKeys(0x424a43ae,0x4a9d5ebe,0x4b3518a9); #endif // 2013-04-10aRagexe, 2013-04-10aRagexeRE #if PACKETVER == 20130410 - packetKeys(0x3AD52ACA,0x314D1AED,0x086E415E); + packetKeys(0x3ad52aca,0x314d1aed,0x086e415e); #endif // 2013-04-17aRagexe, 2013-04-17aRagexeRE #if PACKETVER == 20130417 - packetKeys(0x7FB13B83,0x6E003749,0x07A02B94); + packetKeys(0x7fb13b83,0x6e003749,0x07a02b94); #endif // 2013-04-24aRagexe, 2013-04-24aRagexeRE #if PACKETVER == 20130424 - packetKeys(0x79F679F6,0x79F679F6,0x79F679F6); + packetKeys(0x79f679f6,0x79f679f6,0x79f679f6); #endif // 2013-05-02aRagexe, 2013-05-02aRagexeRE, 2013-05-02bRagexe #if PACKETVER == 20130502 - packetKeys(0x62E733B9,0x62204281,0x7F044DCA); + 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); + packetKeys(0x25421e49,0x175200ba,0x6c0b5239); #endif // 2013-05-15aRagexe, 2013-05-15aRagexeRE #if PACKETVER == 20130515 - packetKeys(0x75794A38,0x58A96BC1,0x296E6FB8); + packetKeys(0x75794a38,0x58a96bc1,0x296e6fb8); #endif // 2013-05-22aRagexe, 2013-05-22aRagexeRE #if PACKETVER == 20130522 - packetKeys(0x6948050B,0x06511D9D,0x725D4DF1); + packetKeys(0x6948050b,0x06511d9d,0x725d4df1); #endif // 2013-05-29aRagexe, 2013-05-29aRagexeRE #if PACKETVER == 20130529 - packetKeys(0x023A6C87,0x14BF1F1E,0x5CC70CC9); + packetKeys(0x023a6c87,0x14bf1f1e,0x5cc70cc9); #endif // 2013-06-05aRagexe, 2013-06-05bRagexe, 2013-06-05cRagexeRE #if PACKETVER == 20130605 - packetKeys(0x646E08D9,0x5F153AB5,0x61B509B5); + 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); + packetKeys(0x6d166f66,0x3c000fcf,0x295b0fcb); #endif // 2013-06-18#1aRagexe, 2013-06-18#1aRagexeRE #if PACKETVER == 20130618 - packetKeys(0x434115DE,0x34A10FE9,0x6791428E); + 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); + packetKeys(0x38f453ef,0x6a040fd8,0x65bd6668); #endif // 2013-07-03aRagexe, 2013-07-03bRagexeRE #if PACKETVER == 20130703 - packetKeys(0x4FF90E23,0x0F1432F2,0x4CFA1EDA); + 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); + packetKeys(0x4a9c4237,0x4ccf3f8f,0x458f758f); #endif // 2013-07-17cRagexe, 2013-07-17cRagexeRE, 2013-07-17dRagexeRE, 2013-07-17eRagexeRE #if PACKETVER == 20130717 - packetKeys(0x5EE5520C,0x5F9E00CF,0x2BED4F91); + packetKeys(0x5ee5520c,0x5f9e00cf,0x2bed4f91); #endif // 2013-07-24eRagexe, 2013-07-24eRagexeRE, 2013-07-24fRagexeRE #if PACKETVER == 20130724 - packetKeys(0x3C243BF5,0x42CC4E2F,0x02106EC6); + packetKeys(0x3c243bf5,0x42cc4e2f,0x02106ec6); #endif // 2013-07-31cRagexe, 2013-07-31cRagexeRE #if PACKETVER == 20130731 - packetKeys(0x1E9D11A6,0x21A232B8,0x6A9E02B7); + packetKeys(0x1e9d11a6,0x21a232b8,0x6a9e02b7); #endif // 2013-08-07aRagexe, 2013-08-07aRagexeRE #if PACKETVER == 20130807 - packetKeys(0x7E241DE0,0x5E805580,0x3D807D80); + packetKeys(0x7e241de0,0x5e805580,0x3d807d80); #endif // 2013-08-14aRagexe, 2013-08-14aRagexeRE #if PACKETVER == 20130814 - packetKeys(0x23A23148,0x0C41420E,0x53785AD7); + packetKeys(0x23a23148,0x0c41420e,0x53785ad7); #endif // 2013-08-21bRagexe, 2013-08-21dRagexeRE #if PACKETVER == 20130821 - packetKeys(0x51673F38,0x01663512,0x5CFF0B3D); + packetKeys(0x51673f38,0x01663512,0x5cff0b3d); #endif // 2013-08-28bRagexe, 2013-08-28bRagexeRE, 2013-08-28cRagexe, 2013-08-28cRagexeRE #if PACKETVER == 20130828 - packetKeys(0x02EF7A9A,0x4882042F,0x76796678); + packetKeys(0x02ef7a9a,0x4882042f,0x76796678); #endif // 2013-09-04aRagexe, 2013-09-04bRagexeRE #if PACKETVER == 20130904 - packetKeys(0x41AF20C5,0x0997799E,0x4AE803A0); + packetKeys(0x41af20c5,0x0997799e,0x4ae803a0); #endif // 2013-09-11aRagexe, 2013-09-11aRagexeRE, 2013-09-11bRagexe, 2013-09-11bRagexeRE #if PACKETVER == 20130911 - packetKeys(0x232B3F47,0x0AD0515F,0x1CA31828); + packetKeys(0x232b3f47,0x0ad0515f,0x1ca31828); #endif // 2013-09-17aRagexe, 2013-09-17aRagexeRE #if PACKETVER == 20130917 - packetKeys(0x5C9164C5,0x32B62F83,0x52864548); + 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); + packetKeys(0x4b9c279a,0x0c7849c4,0x72a77646); #endif // 2013-10-02aRagexe, 2013-10-02aRagexeRE #if PACKETVER == 20131002 - packetKeys(0x63A466F7,0x635362F3,0x41F369F3); + packetKeys(0x63a466f7,0x635362f3,0x41f369f3); #endif // 2013-10-08aRagexe, 2013-10-08bRagexeRE #if PACKETVER == 20131008 - packetKeys(0x64924AAD,0x08CA0445,0x1CBC36DE); + packetKeys(0x64924aad,0x08ca0445,0x1cbc36de); #endif // 2013-10-16aRagexe, 2013-10-16aRagexeRE, 2013-10-16bRagexe, 2013-10-16bRagexeRE #if PACKETVER == 20131016 - packetKeys(0x33AD7A93,0x720C7C49,0x12C4205A); + packetKeys(0x33ad7a93,0x720c7c49,0x12c4205a); #endif // 2013-10-23aRagexe, 2013-10-23aRagexeRE #if PACKETVER == 20131023 - packetKeys(0x02EF6163,0x2B774814,0x58EC3036); + packetKeys(0x02ef6163,0x2b774814,0x58ec3036); #endif // 2013-10-30aRagexe, 2013-10-30aRagexeRE #if PACKETVER == 20131030 - packetKeys(0x4A6A3EFF,0x7E2D5237,0x01CA019E); + 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); + packetKeys(0x143e528f,0x5ca05899,0x44b85b23); #endif // 2013-11-13aRagexeRE, 2013-11-13bRagexe #if PACKETVER == 20131113 - packetKeys(0x44EA14CD,0x49311C88,0x40C86C31); + packetKeys(0x44ea14cd,0x49311c88,0x40c86c31); #endif // 2013-11-20dRagexe, 2013-11-20eRagexeRE #if PACKETVER == 20131120 - packetKeys(0x541E5172,0x1B1D30A0,0x28AA7CE5); + packetKeys(0x541e5172,0x1b1d30a0,0x28aa7ce5); #endif // 2013-11-27aRagexeRE, 2013-11-27bRagexe, 2013-11-27bRagexeRE #if PACKETVER == 20131127 - packetKeys(0x21426A48,0x5C505D6A,0x046D06AD); + packetKeys(0x21426a48,0x5c505d6a,0x046d06ad); #endif // 2013-12-04dRagexeRE, 2013-12-04eRagexe, 2013-12-04eRagexeRE #if PACKETVER == 20131204 - packetKeys(0x792760B2,0x5AF45387,0x36165603); + packetKeys(0x792760b2,0x5af45387,0x36165603); #endif // 2013-12-11cRagexe, 2013-12-11cRagexeRE, 2013-12-11dRagexe, 2013-12-11eRagexeRE #if PACKETVER == 20131211 - packetKeys(0x55B0394E,0x4D341FF2,0x60BC1DC3); + packetKeys(0x55b0394e,0x4d341ff2,0x60bc1dc3); #endif // 2013-12-18aRagexeRE, 2013-12-18bRagexe #if PACKETVER == 20131218 - packetKeys(0x6A596301,0x76866D0E,0x32294A45); -#endif - -// 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 -#if 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 - packetKeys(0x00000000,0x00000000,0x00000000); + packetKeys(0x6a596301,0x76866d0e,0x32294a45); #endif // 2013-12-23bRagexe, 2013-12-23bRagexeRE, 2013-12-23cRagexe, 2013-12-23xRagexeRE #if PACKETVER == 20131223 - packetKeys(0x631C511C,0x111C111C,0x111C111C); + packetKeys(0x631c511c,0x111c111c,0x111c111c); #endif // 2013-12-30aRagexe, 2013-12-30aRagexeRE #if PACKETVER == 20131230 - packetKeys(0x611B7097,0x01F957A1,0x768A0FCB); + packetKeys(0x611b7097,0x01f957a1,0x768a0fcb); #endif // 2014-01-08bRagexeRE, 2014-01-08cRagexe, 2014-01-08cRagexeRE, 2014-01-08dRagexe #if PACKETVER == 20140108 - packetKeys(0x4A1E26F2,0x231E7EFE,0x61FE19FE); + 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); + packetKeys(0x63224335,0x0f3a1f27,0x6d217b24); #endif // 2014-01-22aRagexe, 2014-01-22aRagexeRE #if PACKETVER == 20140122 - packetKeys(0x6123177B,0x05B42C99,0x71702594); + packetKeys(0x6123177b,0x05b42c99,0x71702594); #endif // 2014-01-29aRagexe, 2014-01-29bRagexeRE, 2014-01-29cRagexe #if PACKETVER == 20140129 - packetKeys(0x2E52163C,0x605E518B,0x3C7A62CB); + packetKeys(0x2e52163c,0x605e518b,0x3c7a62cb); #endif // 2014-02-05bRagexe, 2014-02-05bRagexeRE #if PACKETVER == 20140205 - packetKeys(0x63DC7BDC,0x7BDC7BDC,0x7BDC7BDC); + packetKeys(0x63dc7bdc,0x7bdc7bdc,0x7bdc7bdc); #endif // 2014-02-12aRagexe, 2014-02-12aRagexeRE #if PACKETVER == 20140212 - packetKeys(0x46837074,0x65292E89,0x77237F9C); + packetKeys(0x46837074,0x65292e89,0x77237f9c); #endif // 2014-02-19aRagexe, 2014-02-19aRagexeRE, 2014-02-19bRagexeRE #if PACKETVER == 20140219 - packetKeys(0x4E3C5327,0x3A6B5469,0x2CE36AED); + packetKeys(0x4e3c5327,0x3a6b5469,0x2ce36aed); #endif // 2014-02-26aRagexe, 2014-02-26aRagexeRE, 2014-02-26bRagexeRE #if PACKETVER == 20140226 - packetKeys(0x36D71056,0x52122F5E,0x6FF76E99); + packetKeys(0x36d71056,0x52122f5e,0x6ff76e99); #endif // 2014-03-05aRagexe, 2014-03-05aRagexeRE, 2014-03-05bRagexe, 2014-03-05bRagexeRE #if PACKETVER == 20140305 - packetKeys(0x116763F2,0x41117DAC,0x7FD13C45); + packetKeys(0x116763f2,0x41117dac,0x7fd13c45); #endif // 2014-03-12bRagexeRE, 2014-03-12dRagexe #if PACKETVER == 20140312 - packetKeys(0x48911E4E,0x58CB2EB3,0x05232619); + packetKeys(0x48911e4e,0x58cb2eb3,0x05232619); #endif // 2014-03-19aRagexe, 2014-03-19aRagexeRE #if PACKETVER == 20140319 - packetKeys(0x3DA44383,0x1ABB165F,0x5B6846B9); + packetKeys(0x3da44383,0x1abb165f,0x5b6846b9); #endif // 2014-03-26aRagexe, 2014-03-26cRagexeRE #if PACKETVER == 20140326 - packetKeys(0x68E72AF6,0x27DB4C3D,0x348F2677); + packetKeys(0x68e72af6,0x27db4c3d,0x348f2677); #endif // 2014-04-02eRagexeRE, 2014-04-02fRagexe, 2014-04-02fRagexeRE, 2014-04-02gRagexe #if PACKETVER == 20140402 - packetKeys(0x15D3271C,0x004D725B,0x111A3A37); + packetKeys(0x15d3271c,0x004d725b,0x111a3a37); #endif // 2014-04-09aRagexe, 2014-04-09aRagexeRE, 2014-04-09bRagexe #if PACKETVER == 20140409 - packetKeys(0x7F6C390F,0x139C254C,0x7F25708C); + packetKeys(0x7f6c390f,0x139c254c,0x7f25708c); #endif // 2014-04-16aRagexe, 2014-04-16aRagexeRE, 2014-04-16bRagexe @@ -995,464 +1054,464 @@ // 2014-04-23aRagexe, 2014-04-23aRagexeRE #if PACKETVER == 20140423 - packetKeys(0x7E0D6B56,0x74673CD3,0x2EBA4940); + packetKeys(0x7e0d6b56,0x74673cd3,0x2eba4940); #endif // 2014-04-30aRagexe, 2014-04-30aRagexeRE #if PACKETVER == 20140430 - packetKeys(0x400145D8,0x3FE50155,0x11624F70); + packetKeys(0x400145d8,0x3fe50155,0x11624f70); #endif // 2014-05-08bRagexe, 2014-05-08bRagexeRE #if PACKETVER == 20140508 - packetKeys(0x087E57EC,0x25224F4A,0x024F12C6); + packetKeys(0x087e57ec,0x25224f4a,0x024f12c6); #endif // 2014-05-14bRagexe, 2014-05-14bRagexeRE, 2014-05-14cRagexeRE #if PACKETVER == 20140514 - packetKeys(0x4BE46730,0x047926E0,0x37773BBB); + packetKeys(0x4be46730,0x047926e0,0x37773bbb); #endif // 2014-05-21aRagexeRE, 2014-05-21bRagexe #if PACKETVER == 20140521 - packetKeys(0x14ED2D86,0x17371C33,0x2D0473C8); + packetKeys(0x14ed2d86,0x17371c33,0x2d0473c8); #endif // 2014-05-28aRagexe, 2014-05-28aRagexeRE #if PACKETVER == 20140528 - packetKeys(0x579445EB,0x26734878,0x7C861628); + packetKeys(0x579445eb,0x26734878,0x7c861628); #endif // 2014-06-05aRagexe, 2014-06-05aRagexeRE, 2014-06-05bRagexe #if PACKETVER == 20140605 - packetKeys(0x5ABC4223,0x04DD2636,0x0D5850E0); + 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); + packetKeys(0x4fc83479,0x3ab04d1f,0x477b4010); #endif // 2014-06-18aRagexe, 2014-06-18cRagexeRE #if PACKETVER == 20140618 - packetKeys(0x2DB507BB,0x11BA12E7,0x7F447760); + packetKeys(0x2db507bb,0x11ba12e7,0x7f447760); #endif // 2014-06-25aRagexe, 2014-06-25aRagexeRE, 2014-06-25bRagexe #if PACKETVER == 20140625 - packetKeys(0x09987045,0x644B1051,0x1A091CB8); + packetKeys(0x09987045,0x644b1051,0x1a091cb8); #endif // 2014-07-02aRagexe, 2014-07-02aRagexeRE #if PACKETVER == 20140702 - packetKeys(0x5C4574F4,0x5D446386,0x48BD24C9); + packetKeys(0x5c4574f4,0x5d446386,0x48bd24c9); #endif // 2014-07-09aRagexe, 2014-07-09aRagexeRE #if PACKETVER == 20140709 - packetKeys(0x2C7A6E92,0x324F1B85,0x29916FC2); + packetKeys(0x2c7a6e92,0x324f1b85,0x29916fc2); #endif // 2014-07-16aRagexe, 2014-07-16aRagexeRE, 2014-07-16bRagexe, 2014-07-16cRagexe #if PACKETVER == 20140716 - packetKeys(0x0EB20408,0x6D6C4292,0x4F6E4CF3); + packetKeys(0x0eb20408,0x6d6c4292,0x4f6e4cf3); #endif // 2014-07-23aRagexe, 2014-07-23aRagexeRE, 2014-07-23bRagexe, 2014-07-23bRagexeRE #if PACKETVER == 20140723 - packetKeys(0x42A21713,0x51CE6EAD,0x102F7B0B); + packetKeys(0x42a21713,0x51ce6ead,0x102f7b0b); #endif // 2014-07-30aRagexe, 2014-07-30bRagexeRE #if PACKETVER == 20140730 - packetKeys(0x63CE4E53,0x04F969A3,0x690954DB); + packetKeys(0x63ce4e53,0x04f969a3,0x690954db); #endif // 2014-08-06aRagexe, 2014-08-06aRagexeRE, 2014-08-06bRagexe #if PACKETVER == 20140806 - packetKeys(0x0D5B69AC,0x3C001F20,0x0C201420); + 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); + packetKeys(0x7ad51e0a,0x28c72c46,0x210205bd); #endif // 2014-08-20aRagexe, 2014-08-20aRagexeRE #if PACKETVER == 20140820 - packetKeys(0x374F15D0,0x64C87DEC,0x65CE2A41); + packetKeys(0x374f15d0,0x64c87dec,0x65ce2a41); #endif // 2014-08-27aRagexe, 2014-08-27aRagexeRE #if PACKETVER == 20140827 - packetKeys(0x53814CA2,0x27DE193E,0x503E683E); + packetKeys(0x53814ca2,0x27de193e,0x503e683e); #endif // 2014-09-03aRagexe, 2014-09-03aRagexeRE #if PACKETVER == 20140903 - packetKeys(0x2F386F34,0x0F935365,0x76A43888); + packetKeys(0x2f386f34,0x0f935365,0x76a43888); #endif // 2014-09-17aRagexe, 2014-09-17cRagexeRE #if PACKETVER == 20140917 - packetKeys(0x180118EA,0x440134CF,0x3A99179D); + packetKeys(0x180118ea,0x440134cf,0x3a99179d); #endif // 2014-09-24bRagexeRE, 2014-09-24cRagexe, 2014-09-24cRagexeRE #if PACKETVER == 20140924 - packetKeys(0x6F5222D8,0x593B798C,0x4CBD655E); + packetKeys(0x6f5222d8,0x593b798c,0x4cbd655e); #endif // 2014-10-01aRagexe, 2014-10-01bRagexeRE, 2014-10-01cRagexeRE #if PACKETVER == 20141001 - packetKeys(0x6D882C11,0x7DF959E2,0x4F3F60E8); + 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); + 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); + packetKeys(0x2dff467c,0x444b37ee,0x2c1b634f); #endif // 2014-10-22aRagexeRE, 2014-10-22bRagexe #if PACKETVER == 20141022 - packetKeys(0x290551EA,0x2B952C75,0x2D67669B); + packetKeys(0x290551ea,0x2b952c75,0x2d67669b); #endif // 2014-10-29aRagexe, 2014-10-29aRagexeRE #if PACKETVER == 20141029 - packetKeys(0x1AFD581D,0x2E1D4E1D,0x4E1D4E1D); + packetKeys(0x1afd581d,0x2e1d4e1d,0x4e1d4e1d); #endif // 2014-11-05aRagexe, 2014-11-05aRagexeRE, 2014-11-05bRagexe, 2014-11-05bRagexeRE #if PACKETVER == 20141105 - packetKeys(0x7F310819,0x5FF45401,0x2D303DD9); + packetKeys(0x7f310819,0x5ff45401,0x2d303dd9); #endif // 2014-11-12aRagexeRE, 2014-11-12cRagexe, 2014-11-12dRagexe #if PACKETVER == 20141112 - packetKeys(0x430C0C27,0x067153CF,0x5E5439A9); + packetKeys(0x430c0c27,0x067153cf,0x5e5439a9); #endif // 2014-11-19bRagexeRE, 2014-11-19dRagexe #if PACKETVER == 20141119 - packetKeys(0x7A7E7EDE,0x24EB02E3,0x71603607); + 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); + packetKeys(0x01e14c42,0x56d73044,0x4b3278df); #endif // 2014-12-03aRagexe, 2014-12-03aRagexeRE #if PACKETVER == 20141203 - packetKeys(0x66CB52E4,0x1EB84093,0x33563E18); + packetKeys(0x66cb52e4,0x1eb84093,0x33563e18); #endif // 2014-12-10bRagexe, 2014-12-10cRagexe, 2014-12-10cRagexeRE #if PACKETVER == 20141210 - packetKeys(0x0B0B1DD3,0x26EF1797,0x4F40370B); + packetKeys(0x0b0b1dd3,0x26ef1797,0x4f40370b); #endif // 2014-12-17aRagexe, 2014-12-17aRagexeRE #if PACKETVER == 20141217 - packetKeys(0x01AB478C,0x0FDE58F2,0x1DAC7303); + packetKeys(0x01ab478c,0x0fde58f2,0x1dac7303); #endif // 2014-12-23cRagexeRE, 2014-12-24aRagexe #if PACKETVER == 20141223 || \ PACKETVER == 20141224 - packetKeys(0x2E8936E6,0x34463C46,0x67CD3885); + packetKeys(0x2e8936e6,0x34463c46,0x67cd3885); #endif // 2014-12-31aRagexe, 2014-12-31aRagexeRE #if PACKETVER == 20141231 - packetKeys(0x154C347E,0x54B26512,0x52126A12); + packetKeys(0x154c347e,0x54b26512,0x52126a12); #endif // 2015-01-07aRagexe, 2015-01-07aRagexeRE #if PACKETVER == 20150107 - packetKeys(0x6C494A14,0x4DDB6427,0x3E6D7B65); + 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); + packetKeys(0x21c96102,0x13142934,0x1abf4ea3); #endif // 2015-01-21aRagexe, 2015-01-21aRagexeRE, 2015-01-21bRagexeRE #if PACKETVER == 20150121 - packetKeys(0x0B9D2AF5,0x658A3346,0x379E3654); + 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); + packetKeys(0x77ca2d55,0x28b608f0,0x75b47957); #endif // 2015-02-04aRagexe, 2015-02-04cRagexeRE #if PACKETVER == 20150204 - packetKeys(0x134529DB,0x5B4F6CEF,0x29EF11EF); + packetKeys(0x134529db,0x5b4f6cef,0x29ef11ef); #endif // 2015-02-11aRagexe, 2015-02-11aRagexeRE #if PACKETVER == 20150211 - packetKeys(0x33911A25,0x1E6945FD,0x7385623A); + packetKeys(0x33911a25,0x1e6945fd,0x7385623a); #endif // 2015-02-17aRagexe, 2015-02-17aRagexeRE #if PACKETVER == 20150217 - packetKeys(0x731B731B,0x731B731B,0x731B731B); + 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); + packetKeys(0x57fd4b7b,0x19cc16fb,0x0d255d72); #endif // 2015-03-04aRagexe, 2015-03-04aRagexeRE, 2015-03-04bRagexeRE #if PACKETVER == 20150304 - packetKeys(0x1A657B1C,0x7E1806E7,0x55396A5C); + packetKeys(0x1a657b1c,0x7e1806e7,0x55396a5c); #endif // 2015-03-11aRagexe, 2015-03-11aRagexeRE, 2015-03-11bRagexe, 2015-03-11bRagexeRE #if PACKETVER == 20150311 - packetKeys(0x48C45D97,0x06CE09B0,0x5836642F); + 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); + packetKeys(0x1b3738e7,0x0ad4238f,0x7d252a1f); #endif // 2015-03-25aRagexe, 2015-03-25bRagexeRE, 2015-03-25cRagexeRE #if PACKETVER == 20150325 - packetKeys(0x68F62B8C,0x337C3468,0x38FC0AC7); + packetKeys(0x68f62b8c,0x337c3468,0x38fc0ac7); #endif // 2015-04-01aRagexe, 2015-04-01bRagexeRE #if PACKETVER == 20150401 - packetKeys(0x207F3A08,0x57E6160C,0x02A60382); + packetKeys(0x207f3a08,0x57e6160c,0x02a60382); #endif // 2015-04-08aRagexe, 2015-04-08aRagexeRE #if PACKETVER == 20150408 - packetKeys(0x39812C9D,0x23DA516E,0x59A33DD2); + packetKeys(0x39812c9d,0x23da516e,0x59a33dd2); #endif // 2015-04-15aRagexe, 2015-04-15aRagexeRE #if PACKETVER == 20150415 - packetKeys(0x7EC44F6A,0x7DE57139,0x60DA5436); + packetKeys(0x7ec44f6a,0x7de57139,0x60da5436); #endif // 2015-04-22aRagexe, 2015-04-22aRagexeRE #if PACKETVER == 20150422 - packetKeys(0x10D22CE2,0x69E279E2,0x79E279E2); + packetKeys(0x10d22ce2,0x69e279e2,0x79e279e2); #endif // 2015-04-29aRagexe, 2015-04-29aRagexeRE #if PACKETVER == 20150429 - packetKeys(0x2BF61A71,0x565D5DDF,0x0FB90019); + packetKeys(0x2bf61a71,0x565d5ddf,0x0fb90019); #endif // 2015-05-07bRagexe, 2015-05-07bRagexeRE, 2015-05-07cRagexe #if PACKETVER == 20150507 - packetKeys(0x55B54373,0x58967821,0x67F41832); + packetKeys(0x55b54373,0x58967821,0x67f41832); #endif // 2015-05-13aRagexe, 2015-05-13aRagexeRE #if PACKETVER == 20150513 - packetKeys(0x62C86D09,0x75944F17,0x112C133D); + packetKeys(0x62c86d09,0x75944f17,0x112c133d); #endif // 2015-05-20aRagexe, 2015-05-20aRagexeRE #if PACKETVER == 20150520 - packetKeys(0x17430238,0x44DE585F,0x56A40616); + packetKeys(0x17430238,0x44de585f,0x56a40616); #endif // 2015-05-27aRagexe, 2015-05-27aRagexeRE #if PACKETVER == 20150527 - packetKeys(0x35AE7BAE,0x3BAE3BAE,0x3BAE3BAE); + packetKeys(0x35ae7bae,0x3bae3bae,0x3bae3bae); #endif // 2015-06-03aRagexe, 2015-06-03bRagexeRE #if PACKETVER == 20150603 - packetKeys(0x1DDD245D,0x309446E0,0x58E53F1F); + packetKeys(0x1ddd245d,0x309446e0,0x58e53f1f); #endif // 2015-06-10aRagexe, 2015-06-10aRagexeRE #if PACKETVER == 20150610 - packetKeys(0x2FC406D3,0x7B3E32F5,0x02B80B47); + 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); + packetKeys(0x250f7e09,0x25416076,0x029a780e); #endif // 2015-06-24aRagexe, 2015-06-24aRagexeRE #if PACKETVER == 20150624 - packetKeys(0x440B0E24,0x1BEA7A4C,0x2C646784); + packetKeys(0x440b0e24,0x1bea7a4c,0x2c646784); #endif // 2015-07-01bRagexe, 2015-07-01bRagexeRE, 2015-07-02aRagexe #if PACKETVER == 20150701 || \ PACKETVER == 20150702 - packetKeys(0x4DD55F9B,0x70C67B03,0x78C60DB6); + packetKeys(0x4dd55f9b,0x70c67b03,0x78c60db6); #endif // 2015-07-08bRagexeRE, 2015-07-08cRagexe, 2015-07-08cRagexeRE, 2015-07-08dRagexeRE #if PACKETVER == 20150708 - packetKeys(0x451C5E19,0x5661750B,0x2F4644AC); + packetKeys(0x451c5e19,0x5661750b,0x2f4644ac); #endif // 2015-07-15aRagexe, 2015-07-15aRagexeRE #if PACKETVER == 20150715 - packetKeys(0x1F805483,0x67745585,0x7FCE189C); + packetKeys(0x1f805483,0x67745585,0x7fce189c); #endif // 2015-07-22bRagexe, 2015-07-22bRagexeRE #if PACKETVER == 20150722 - packetKeys(0x41FA53D4,0x2CF044E2,0x663A3F1D); + packetKeys(0x41fa53d4,0x2cf044e2,0x663a3f1d); #endif // 2015-07-29aRagexe, 2015-07-29aRagexeRE #if PACKETVER == 20150729 - packetKeys(0x08EE40A9,0x206F3D7F,0x0AE37339); + packetKeys(0x08ee40a9,0x206f3d7f,0x0ae37339); #endif // 2015-08-05aRagexe, 2015-08-05dRagexeRE #if PACKETVER == 20150805 - packetKeys(0x1C3F243F,0x243F243F,0x243F243F); + packetKeys(0x1c3f243f,0x243f243f,0x243f243f); #endif // 2015-08-12aRagexe, 2015-08-12aRagexeRE #if PACKETVER == 20150812 - packetKeys(0x0B6F64A8,0x5BCC47EC,0x00EC08EC); + packetKeys(0x0b6f64a8,0x5bcc47ec,0x00ec08ec); #endif // 2015-08-19aRagexe, 2015-08-19aRagexeRE, 2015-08-19bRagexeRE #if PACKETVER == 20150819 - packetKeys(0x1A2400E0,0x736E5686,0x10F315D5); + packetKeys(0x1a2400e0,0x736e5686,0x10f315d5); #endif // 2015-08-26aRagexe, 2015-08-26aRagexeRE, 2015-08-26bRagexe, 2015-08-26bRagexeRE #if PACKETVER == 20150826 - packetKeys(0x77883C56,0x1829359F,0x0DE635B6); + packetKeys(0x77883c56,0x1829359f,0x0de635b6); #endif // 2015-09-02aRagexe, 2015-09-02aRagexeRE #if PACKETVER == 20150902 - packetKeys(0x4EDB18C1,0x6B9355BA,0x38AA6239); + packetKeys(0x4edb18c1,0x6b9355ba,0x38aa6239); #endif // 2015-09-09aRagexe, 2015-09-09aRagexeRE #if PACKETVER == 20150909 - packetKeys(0x19AB2BF0,0x04754299,0x48770736); + packetKeys(0x19ab2bf0,0x04754299,0x48770736); #endif // 2015-09-16aRagexe, 2015-09-16cRagexe, 2015-09-16cRagexeRE #if PACKETVER == 20150916 - packetKeys(0x17F83A19,0x116944F4,0x1CC541E9); + 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); + packetKeys(0x765742b9,0x22d61c2f,0x7da94fb2); #endif // 2015-10-01aRagexe, 2015-10-01bRagexeRE #if PACKETVER == 20151001 - packetKeys(0x5CFF4561,0x32514AD1,0x06D126D1); + packetKeys(0x5cff4561,0x32514ad1,0x06d126d1); #endif // 2015-10-07aRagexe, 2015-10-07aRagexeRE #if PACKETVER == 20151007 - packetKeys(0x3C6447A8,0x032170D7,0x6490476C); + packetKeys(0x3c6447a8,0x032170d7,0x6490476c); #endif // 2015-10-14bRagexe, 2015-10-14bRagexeRE #if PACKETVER == 20151014 - packetKeys(0x402728A8,0x5D0E309F,0x240018FD); + 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); + 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); + packetKeys(0x45b945b9,0x45b945b9,0x45b945b9); #endif // 2015-11-04aRagexe, 2015-11-04aRagexeRE #if PACKETVER == 20151104 - packetKeys(0x4C17382A,0x7ED174C9,0x29961E4F); + packetKeys(0x4c17382a,0x7ed174c9,0x29961e4f); #endif // 2015-11-11aRagexe, 2015-11-11aRagexeRE, 2015-11-11bRagexe #if PACKETVER == 20151111 - packetKeys(0x46097C77,0x5F193871,0x29140A21); + packetKeys(0x46097c77,0x5f193871,0x29140a21); #endif // 2015-11-18aRagexe, 2015-11-18aRagexeRE #if PACKETVER == 20151118 - packetKeys(0x734C3241,0x6E846F34,0x731C06D6); + 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); + packetKeys(0x237446c0,0x5efb343a,0x0edf06c5); #endif // 2015-12-02aRagexe, 2015-12-02bRagexeRE #if PACKETVER == 20151202 - packetKeys(0x4EDE52DE,0x52DE52DE,0x52DE52DE); + packetKeys(0x4ede52de,0x52de52de,0x52de52de); #endif // 2015-12-09aRagexe, 2015-12-09aRagexeRE #if PACKETVER == 20151209 - packetKeys(0x652C5898,0x7A351FB3,0x67EA2886); + packetKeys(0x652c5898,0x7a351fb3,0x67ea2886); #endif // 2015-12-16aRagexe, 2015-12-16aRagexeRE #if PACKETVER == 20151216 - packetKeys(0x25DD643D,0x61AC39DE,0x77A8206D); + packetKeys(0x25dd643d,0x61ac39de,0x77a8206d); #endif // 2015-12-23bRagexe, 2015-12-23bRagexeRE #if PACKETVER == 20151223 - packetKeys(0x347D68D0,0x2C705320,0x7B4A199D); + packetKeys(0x347d68d0,0x2c705320,0x7b4a199d); #endif // 2015-12-30aRagexe, 2015-12-30aRagexeRE #if PACKETVER == 20151230 - packetKeys(0x54C51241,0x33883499,0x3CDA35F0); + packetKeys(0x54c51241,0x33883499,0x3cda35f0); #endif // 2016-01-06aRagexe, 2016-01-06aRagexeRE #if PACKETVER == 20160106 - packetKeys(0x40520265,0x33FE26FC,0x7136294F); + 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); + packetKeys(0x18005c4b,0x19a94a72,0x73f678ec); #endif // 2016-01-20aRagexe, 2016-01-20aRagexeRE @@ -1462,549 +1521,549 @@ // 2016-01-27aRagexeRE, 2016-01-27aRagexeRE_2, 2016-01-27bRagexeRE, 2016-01-27cRagexe, 2016-01-27dRagexe #if PACKETVER == 20160127 - packetKeys(0x6B1E7146,0x612C47E6,0x274E56EE); + packetKeys(0x6b1e7146,0x612c47e6,0x274e56ee); #endif // 2016-02-03aRagexe, 2016-02-03aRagexeRE #if PACKETVER == 20160203 - packetKeys(0x3E1411AF,0x6C744497,0x7CFA1BDE); + packetKeys(0x3e1411af,0x6c744497,0x7cfa1bde); #endif // 2016-02-11aRagexe, 2016-02-11aRagexeRE #if PACKETVER == 20160211 - packetKeys(0x613813EA,0x05251DAB,0x1FD35E33); + 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); + packetKeys(0x25895a8e,0x09421c19,0x763a2d7a); #endif // 2016-02-24aRagexe, 2016-02-24aRagexeRE, 2016-02-24bRagexeRE #if PACKETVER == 20160224 - packetKeys(0x7088019A,0x13471F02,0x42356A7D); + packetKeys(0x7088019a,0x13471f02,0x42356a7d); #endif // 2016-03-02bRagexe, 2016-03-02bRagexeRE #if PACKETVER == 20160302 - packetKeys(0x7B4441B9,0x5BBC63AF,0x45DA0E71); + packetKeys(0x7b4441b9,0x5bbc63af,0x45da0e71); #endif // 2016-03-09aRagexeRE, 2016-03-09cRagexe #if PACKETVER == 20160309 - packetKeys(0x21587520,0x353A7706,0x1B722B25); + packetKeys(0x21587520,0x353a7706,0x1b722b25); #endif // 2016-03-16aRagexe, 2016-03-16aRagexeRE, 2016-03-18aRagexe #if PACKETVER == 20160316 || \ PACKETVER == 20160318 - packetKeys(0x62363E36,0x3E363E36,0x3E363E36); + packetKeys(0x62363e36,0x3e363e36,0x3e363e36); #endif // 2016-03-23aRagexe, 2016-03-23aRagexeRE, 2016-03-23bRagexe, 2016-03-23bRagexeRE #if PACKETVER == 20160323 - packetKeys(0x73E35A83,0x62142FA8,0x12BA36BD); + packetKeys(0x73e35a83,0x62142fa8,0x12ba36bd); #endif // 2016-03-30aRagexe, 2016-03-30aRagexeRE, 2016-03-30bRagexe #if PACKETVER == 20160330 - packetKeys(0x02050940,0x545336FF,0x7E7D4902); + packetKeys(0x02050940,0x545336ff,0x7e7d4902); #endif // 2016-04-06aRagexe, 2016-04-06aRagexeRE, 2016-04-06bRagexe #if PACKETVER == 20160406 - packetKeys(0x568611EA,0x32457D8D,0x2B020477); + 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); + packetKeys(0x31bd479a,0x40c61398,0x397c1a80); #endif // 2016-04-20aRagexeRE, 2016-04-20cRagexe #if PACKETVER == 20160420 - packetKeys(0x67D2163A,0x3068215B,0x4835474D); + packetKeys(0x67d2163a,0x3068215b,0x4835474d); #endif // 2016-04-27aRagexe, 2016-04-27aRagexeRE #if PACKETVER == 20160427 - packetKeys(0x12DC378E,0x4E3E7EBE,0x0ABE2ABE); + packetKeys(0x12dc378e,0x4e3e7ebe,0x0abe2abe); #endif // 2016-05-04aRagexe, 2016-05-04aRagexeRE #if PACKETVER == 20160504 - packetKeys(0x09E0544C,0x0231251D,0x2F4E195F); + packetKeys(0x09e0544c,0x0231251d,0x2f4e195f); #endif // 2016-05-11aRagexe, 2016-05-11aRagexeRE, 2016-05-11bRagexeRE #if PACKETVER == 20160511 - packetKeys(0x3C666FE2,0x27E84E3E,0x53E11BA5); + packetKeys(0x3c666fe2,0x27e84e3e,0x53e11ba5); #endif // 2016-05-18aRagexe, 2016-05-18aRagexeRE #if PACKETVER == 20160518 - packetKeys(0x57DB7CA1,0x1FEA1629,0x26DD244D); + packetKeys(0x57db7ca1,0x1fea1629,0x26dd244d); #endif // 2016-05-25aRagexe, 2016-05-25aRagexeRE, 2016-05-26aRagexe #if PACKETVER == 20160525 || \ PACKETVER == 20160526 - packetKeys(0x485C45B6,0x47DC6192,0x76B34A36); + packetKeys(0x485c45b6,0x47dc6192,0x76b34a36); #endif // 2016-06-01aRagexe, 2016-06-01aRagexeRE #if PACKETVER == 20160601 - packetKeys(0x3DAD32C4,0x59F001BE,0x73F65E56); + 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); + packetKeys(0x11d74609,0x77c43e8a,0x44290f53); #endif // 2016-06-15aRagexe, 2016-06-15aRagexeRE #if PACKETVER == 20160615 - packetKeys(0x062C5C26,0x6CF47E82,0x4DD53480); + packetKeys(0x062c5c26,0x6cf47e82,0x4dd53480); #endif // 2016-06-22aRagexe, 2016-06-22aRagexeRE #if PACKETVER == 20160622 - packetKeys(0x426548AB,0x5C0F5DD4,0x03022710); + 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); + packetKeys(0x0df31ccc,0x54281606,0x5c4c6855); #endif // 2016-07-06bRagexe, 2016-07-06cRagexeRE #if PACKETVER == 20160706 - packetKeys(0x33A766D0,0x743F04F8,0x0FA0276C); + 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); + packetKeys(0x714f2495,0x7ddc6f32,0x3fd8533d); #endif // 2016-07-20aRagexe, 2016-07-20aRagexeRE, 2016-07-20bRagexe, 2016-07-20bRagexeRE #if PACKETVER == 20160720 - packetKeys(0x4F8A19C0,0x2D8E085C,0x37BB67D6); + packetKeys(0x4f8a19c0,0x2d8e085c,0x37bb67d6); #endif // 2016-07-27aRagexe, 2016-07-27aRagexeRE, 2016-07-27bRagexe, 2016-07-27bRagexeRE #if PACKETVER == 20160727 - packetKeys(0x3C6952AB,0x26E4077F,0x37E25DF7); + packetKeys(0x3c6952ab,0x26e4077f,0x37e25df7); #endif // 2016-08-03bRagexe, 2016-08-03bRagexeRE #if PACKETVER == 20160803 - packetKeys(0x67F438C2,0x512A4EB7,0x2D353182); + packetKeys(0x67f438c2,0x512a4eb7,0x2d353182); #endif // 2016-08-10aRagexe, 2016-08-10aRagexeRE #if PACKETVER == 20160810 - packetKeys(0x2F252886,0x242234A2,0x48BC5032); + packetKeys(0x2f252886,0x242234a2,0x48bc5032); #endif // 2016-08-17aRagexe, 2016-08-17aRagexeRE #if PACKETVER == 20160817 - packetKeys(0x675E6900,0x3F8E1D16,0x58D650E5); + packetKeys(0x675e6900,0x3f8e1d16,0x58d650e5); #endif // 2016-08-24aRagexe, 2016-08-24aRagexeRE #if PACKETVER == 20160824 - packetKeys(0x2FA92FA9,0x2FA92FA9,0x2FA92FA9); + packetKeys(0x2fa92fa9,0x2fa92fa9,0x2fa92fa9); #endif // 2016-08-31aRagexe, 2016-08-31aRagexeRE, 2016-08-31bRagexe, 2016-08-31bRagexeRE #if PACKETVER == 20160831 - packetKeys(0x564E13B0,0x7F680549,0x382D273B); + packetKeys(0x564e13b0,0x7f680549,0x382d273b); #endif // 2016-09-07aRagexe, 2016-09-07aRagexeRE #if PACKETVER == 20160907 - packetKeys(0x32E5237D,0x57BD4DBD,0x5DBD5DBD); + packetKeys(0x32e5237d,0x57bd4dbd,0x5dbd5dbd); #endif // 2016-09-13aRagexe, 2016-09-13aRagexeRE #if PACKETVER == 20160913 - packetKeys(0x7C79748F,0x1AA03B1D,0x6EAC4747); + packetKeys(0x7c79748f,0x1aa03b1d,0x6eac4747); #endif // 2016-09-21aRagexe, 2016-09-21bRagexeRE #if PACKETVER == 20160921 - packetKeys(0x11CD15CD,0x15CD15CD,0x15CD15CD); + packetKeys(0x11cd15cd,0x15cd15cd,0x15cd15cd); #endif // 2016-09-28cRagexe, 2016-09-28cRagexeRE, 2016-09-28dRagexeRE #if PACKETVER == 20160928 - packetKeys(0x2F8C67F5,0x22D42C38,0x57513774); + packetKeys(0x2f8c67f5,0x22d42c38,0x57513774); #endif // 2016-10-05aRagexe, 2016-10-05aRagexeRE #if PACKETVER == 20161005 - packetKeys(0x5BAE21F8,0x021E2FFC,0x3BEB7C31); + packetKeys(0x5bae21f8,0x021e2ffc,0x3beb7c31); #endif // 2016-10-12aRagexe, 2016-10-12aRagexeRE #if PACKETVER == 20161012 - packetKeys(0x5E2311F2,0x14FD012C,0x76EB64F6); + packetKeys(0x5e2311f2,0x14fd012c,0x76eb64f6); #endif // 2016-10-19aRagexe, 2016-10-19aRagexeRE #if PACKETVER == 20161019 - packetKeys(0x34882F11,0x7C870E70,0x7E61350D); + packetKeys(0x34882f11,0x7c870e70,0x7e61350d); #endif // 2016-10-26bRagexe, 2016-10-26bRagexeRE, 2016-10-26cRagexe, 2016-10-26cRagexeRE #if PACKETVER == 20161026 - packetKeys(0x2CB86AE6,0x7D12660E,0x1B004DEB); + 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); + 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); + packetKeys(0x0a5277c0,0x2db17506,0x0e8f26da); #endif // 2016-11-16aRagexe, 2016-11-16bRagexeRE, 2016-11-16cRagexeRE #if PACKETVER == 20161116 - packetKeys(0x780C5C3F,0x15E92272,0x2BA770C5); + packetKeys(0x780c5c3f,0x15e92272,0x2ba770c5); #endif // 2016-11-23aRagexe, 2016-11-23aRagexeRE #if PACKETVER == 20161123 - packetKeys(0x66FF559F,0x00D3535B,0x236246F7); + packetKeys(0x66ff559f,0x00d3535b,0x236246f7); #endif // 2016-11-30aRagexe, 2016-11-30aRagexeRE, 2016-11-30bRagexe, 2016-11-30bRagexeRE #if PACKETVER == 20161130 - packetKeys(0x2ED80296,0x0D837373,0x20266F9A); + 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); + packetKeys(0x52d267aa,0x4fe42156,0x1292153e); #endif // 2016-12-14bRagexe, 2016-12-14bRagexeRE, 2016-12-14cRagexe, 2016-12-14cRagexeRE #if PACKETVER == 20161214 - packetKeys(0x4DDE217B,0x07863AE0,0x5B591656); + 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); + packetKeys(0x69cb4f56,0x793c165e,0x673a2354); #endif // 2016-12-28aRagexe, 2016-12-28aRagexeRE #if PACKETVER == 20161228 - packetKeys(0x09366971,0x005672F1,0x6F3712AE); + packetKeys(0x09366971,0x005672f1,0x6f3712ae); #endif // 2017-01-04aRagexe, 2017-01-04bRagexeRE #if PACKETVER == 20170104 - packetKeys(0x44416BC3,0x6C8D1817,0x072D75D5); + packetKeys(0x44416bc3,0x6c8d1817,0x072d75d5); #endif // 2017-01-11aRagexe, 2017-01-11aRagexeRE #if PACKETVER == 20170111 - packetKeys(0x19B637F9,0x0E9C378A,0x41673186); + packetKeys(0x19b637f9,0x0e9c378a,0x41673186); #endif // 2017-01-18aRagexe, 2017-01-18aRagexeRE #if PACKETVER == 20170118 - packetKeys(0x456B36EB,0x15EB34B0,0x18C42E43); + packetKeys(0x456b36eb,0x15eb34b0,0x18c42e43); #endif // 2017-01-25aRagexe, 2017-01-25aRagexeRE #if PACKETVER == 20170125 - packetKeys(0x066E04FE,0x3004224A,0x04FF0458); + packetKeys(0x066e04fe,0x3004224a,0x04ff0458); #endif // 2017-02-01aRagexe, 2017-02-01aRagexeRE #if PACKETVER == 20170201 - packetKeys(0x2011228E,0x00453005,0x628E7F0A); + packetKeys(0x2011228e,0x00453005,0x628e7f0a); #endif // 2017-02-08aRagexeRE, 2017-02-08bRagexe, 2017-02-08bRagexeRE #if PACKETVER == 20170208 - packetKeys(0x6A764E5F,0x0609570D,0x28AE07FA); + packetKeys(0x6a764e5f,0x0609570d,0x28ae07fa); #endif // 2017-02-15aRagexe, 2017-02-15aRagexeRE #if PACKETVER == 20170215 - packetKeys(0x50C01315,0x51012A42,0x679E16C3); + packetKeys(0x50c01315,0x51012a42,0x679e16c3); #endif // 2017-02-22aRagexe, 2017-02-22aRagexeRE #if PACKETVER == 20170222 - packetKeys(0x5A242F2F,0x6C556187,0x73C022CB); + packetKeys(0x5a242f2f,0x6c556187,0x73c022cb); #endif // 2017-02-28aRagexe, 2017-02-28aRagexeRE, 2017-02-28bRagexe #if PACKETVER == 20170228 - packetKeys(0x771D4F2B,0x20EF1F4C,0x0D5135C8); + packetKeys(0x771d4f2b,0x20ef1f4c,0x0d5135c8); #endif // 2017-03-08aRagexe, 2017-03-08bRagexeRE #if PACKETVER == 20170308 - packetKeys(0x653470A9,0x6B316A71,0x5C712C71); + packetKeys(0x653470a9,0x6b316a71,0x5c712c71); #endif // 2017-03-15cRagexe, 2017-03-15cRagexeRE #if PACKETVER == 20170315 - packetKeys(0x399A0856,0x56642A94,0x7F77157D); + packetKeys(0x399a0856,0x56642a94,0x7f77157d); #endif // 2017-03-22aRagexe, 2017-03-22aRagexeRE, 2017-03-22bRagexe, 2017-03-22bRagexeRE #if PACKETVER == 20170322 - packetKeys(0x2050167B,0x01731233,0x40337033); + packetKeys(0x2050167b,0x01731233,0x40337033); #endif // 2017-03-29bRagexe, 2017-03-29cRagexe, 2017-03-29cRagexeRE, 2017-03-29dRagexeRE #if PACKETVER == 20170329 - packetKeys(0x18B31A80,0x1B0B1D56,0x16857D6A); + packetKeys(0x18b31a80,0x1b0b1d56,0x16857d6a); #endif // 2017-04-05bRagexe, 2017-04-05bRagexeRE, 2017-04-05cRagexe, 2017-04-05cRagexeRE #if PACKETVER == 20170405 - packetKeys(0x1FDE7DAC,0x2F9F5B63,0x3F2062AF); + packetKeys(0x1fde7dac,0x2f9f5b63,0x3f2062af); #endif // 2017-04-12aRagexe, 2017-04-12aRagexeRE #if PACKETVER == 20170412 - packetKeys(0x39223393,0x5C847779,0x10217985); + packetKeys(0x39223393,0x5c847779,0x10217985); #endif // 2017-04-19aRagexe, 2017-04-19bRagexeRE #if PACKETVER == 20170419 - packetKeys(0x1F8F4B3F,0x2E481F03,0x39ED4178); + packetKeys(0x1f8f4b3f,0x2e481f03,0x39ed4178); #endif // 2017-04-26bRagexe, 2017-04-26dRagexeRE #if PACKETVER == 20170426 - packetKeys(0x167642A7,0x1DEC3D26,0x6D046D4C); + packetKeys(0x167642a7,0x1dec3d26,0x6d046d4c); #endif // 2017-05-02aRagexe, 2017-05-02bRagexe, 2017-05-02dRagexeRE #if PACKETVER == 20170502 - packetKeys(0x05224194,0x466D4204,0x31F02EE0); + packetKeys(0x05224194,0x466d4204,0x31f02ee0); #endif // 2017-05-17aRagexe, 2017-05-17aRagexeRE, 2017-05-17bRagexeRE #if PACKETVER == 20170517 - packetKeys(0x2CC4749A,0x1FA954DC,0x72276857); + packetKeys(0x2cc4749a,0x1fa954dc,0x72276857); #endif // 2017-05-24aRagexe, 2017-05-24aRagexeRE, 2017-05-24bRagexe #if PACKETVER == 20170524 - packetKeys(0x0B4E03A6,0x2B93427C,0x583D4477); + packetKeys(0x0b4e03a6,0x2b93427c,0x583d4477); #endif // 2017-05-31aRagexe, 2017-05-31aRagexeRE #if PACKETVER == 20170531 - packetKeys(0x03FA5A97,0x20B802D5,0x339F1977); + packetKeys(0x03fa5a97,0x20b802d5,0x339f1977); #endif // 2017-06-07bRagexeRE, 2017-06-07cRagexe, 2017-06-07cRagexeRE #if PACKETVER == 20170607 - packetKeys(0x50564ACD,0x79CA4E15,0x405F4894); + packetKeys(0x50564acd,0x79ca4e15,0x405f4894); #endif // 2017-06-14bRagexe, 2017-06-14bRagexeRE #if PACKETVER == 20170614 - packetKeys(0x5ED10A48,0x667F4301,0x2E5D761F); + packetKeys(0x5ed10a48,0x667f4301,0x2e5d761f); #endif // 2017-06-21aRagexeRE, 2017-06-21bRagexe #if PACKETVER == 20170621 - packetKeys(0x155F34EC,0x2D943FA9,0x3D9170EB); + packetKeys(0x155f34ec,0x2d943fa9,0x3d9170eb); #endif // 2017-06-28bRagexe, 2017-06-28bRagexeRE #if PACKETVER == 20170628 - packetKeys(0x04691C86,0x43C210E2,0x2FE277E2); + packetKeys(0x04691c86,0x43c210e2,0x2fe277e2); #endif // 2017-07-05aRagexe, 2017-07-05aRagexeRE #if PACKETVER == 20170705 - packetKeys(0x7EB000AE,0x02FB1DBC,0x5CB131E6); + packetKeys(0x7eb000ae,0x02fb1dbc,0x5cb131e6); #endif // 2017-07-12bRagexe, 2017-07-12bRagexeRE #if PACKETVER == 20170712 - packetKeys(0x2C3C202C,0x3F2C2F2C,0x2F2C2F2C); + packetKeys(0x2c3c202c,0x3f2c2f2c,0x2f2c2f2c); #endif // 2017-07-19aRagexe, 2017-07-19aRagexeRE #if PACKETVER == 20170719 - packetKeys(0x46465C88,0x10116F66,0x200866F9); + packetKeys(0x46465c88,0x10116f66,0x200866f9); #endif // 2017-07-26aRagexe, 2017-07-26cRagexeRE #if PACKETVER == 20170726 - packetKeys(0x102F23DB,0x7E767751,0x3BC172EF); + packetKeys(0x102f23db,0x7e767751,0x3bc172ef); #endif // 2017-08-01aRagexe, 2017-08-01aRagexeRE, 2017-08-01bRagexe #if PACKETVER == 20170801 - packetKeys(0x26B52A7F,0x5377619D,0x4F580AC4); + packetKeys(0x26b52a7f,0x5377619d,0x4f580ac4); #endif // 2017-08-09cRagexe, 2017-08-09cRagexeRE #if PACKETVER == 20170809 - packetKeys(0x452156CB,0x71442624,0x2EE66D1C); + packetKeys(0x452156cb,0x71442624,0x2ee66d1c); #endif // 2017-08-16cRagexe, 2017-08-16cRagexeRE, 2017-08-16dRagexe, 2017-08-16dRagexeRE #if PACKETVER == 20170816 - packetKeys(0x78914673,0x3F8B7634,0x55B814BC); + packetKeys(0x78914673,0x3f8b7634,0x55b814bc); #endif // 2017-08-23aRagexe, 2017-08-23aRagexeRE #if PACKETVER == 20170823 - packetKeys(0x22677205,0x393D1002,0x58DC6BB4); + packetKeys(0x22677205,0x393d1002,0x58dc6bb4); #endif // 2017-08-30aRagexe, 2017-08-30aRagexeRE, 2017-08-30bRagexe, 2017-08-30bRagexeRE #if PACKETVER == 20170830 - packetKeys(0x1D49592B,0x00970C17,0x1E640103); + packetKeys(0x1d49592b,0x00970c17,0x1e640103); #endif // 2017-09-06cRagexe, 2017-09-06cRagexeRE #if PACKETVER == 20170906 - packetKeys(0x7DEF7677,0x351F36E6,0x52303485); + packetKeys(0x7def7677,0x351f36e6,0x52303485); #endif // 2017-09-13bRagexeRE, 2017-09-13cRagexe #if PACKETVER == 20170913 - packetKeys(0x7A645935,0x1DA05062,0x5A7A4C43); + packetKeys(0x7a645935,0x1da05062,0x5a7a4c43); #endif // 2017-09-20aRagexe, 2017-09-20bRagexeRE #if PACKETVER == 20170920 - packetKeys(0x53024DA5,0x04EC212D,0x0BF87CD4); + 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); + packetKeys(0x15624100,0x0ce1463e,0x0e5d6534); #endif // 2017-10-02cRagexe, 2017-10-02cRagexeRE #if PACKETVER == 20171002 - packetKeys(0x15E1716C,0x4E765B63,0x357D2370); + packetKeys(0x15e1716c,0x4e765b63,0x357d2370); #endif // 2017-10-11aRagexe, 2017-10-11aRagexeRE, 2017-10-11bRagexe, 2017-10-11bRagexeRE #if PACKETVER == 20171011 - packetKeys(0x4F121B3E,0x12670E17,0x19896C11); + packetKeys(0x4f121b3e,0x12670e17,0x19896c11); #endif // 2017-10-18aRagexe, 2017-10-18aRagexeRE #if PACKETVER == 20171018 - packetKeys(0x2CAA109C,0x158C1EC2,0x7A5E58F3); + 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); + packetKeys(0x165c565c,0x565c565c,0x565c565c); #endif // 2017-11-01aRagexe, 2017-11-01bRagexeRE #if PACKETVER == 20171101 - packetKeys(0x7056317F,0x7EEE0589,0x02672373); + packetKeys(0x7056317f,0x7eee0589,0x02672373); #endif // 2017-11-08aRagexe, 2017-11-08bRagexeRE #if PACKETVER == 20171108 - packetKeys(0x03695685,0x7FAC12CE,0x182F7A7B); + packetKeys(0x03695685,0x7fac12ce,0x182f7a7b); #endif // 2017-11-15aRagexe, 2017-11-15aRagexeRE #if PACKETVER == 20171115 - packetKeys(0x23B97A3B,0x34610993,0x2892070E); + packetKeys(0x23b97a3b,0x34610993,0x2892070e); #endif // 2017-11-22aRagexe, 2017-11-22bRagexeRE #if PACKETVER == 20171122 - packetKeys(0x03221B0E,0x73AB7A5F,0x0DD80FD4); + packetKeys(0x03221b0e,0x73ab7a5f,0x0dd80fd4); #endif // 2017-11-29aRagexe, 2017-11-29aRagexeRE #if PACKETVER == 20171129 - packetKeys(0x581B77A7,0x62F74D7A,0x4F102173); + packetKeys(0x581b77a7,0x62f74d7a,0x4f102173); #endif // 2017-12-06aRagexeRE, 2017-12-06bRagexe, 2017-12-06cRagexe #if PACKETVER == 20171206 - packetKeys(0x39D54BD3,0x577A0C21,0x4C1C316E); + packetKeys(0x39d54bd3,0x577a0c21,0x4c1c316e); #endif // 2017-12-13bRagexe, 2017-12-13bRagexeRE #if PACKETVER == 20171213 - packetKeys(0x44E41107,0x3B126921,0x00E06AAC); + packetKeys(0x44e41107,0x3b126921,0x00e06aac); #endif // 2017-12-20aRagexe, 2017-12-20aRagexeRE #if PACKETVER == 20171220 - packetKeys(0x6EFE009A,0x440B7BFA,0x052339C8); + packetKeys(0x6efe009a,0x440b7bfa,0x052339c8); #endif // 2017-12-27aRagexe, 2017-12-27aRagexeRE #if PACKETVER == 20171227 - packetKeys(0x257A2F6E,0x51140EEE,0x00FA4452); + packetKeys(0x257a2f6e,0x51140eee,0x00fa4452); #endif // 2018-01-03aRagexe, 2018-01-03aRagexeRE, 2018-01-03bRagexe, 2018-01-03bRagexeRE #if PACKETVER == 20180103 - packetKeys(0x348F4BD7,0x7A425A54,0x628F589A); + packetKeys(0x348f4bd7,0x7a425a54,0x628f589a); #endif // 2018-01-17aRagexe, 2018-01-17aRagexeRE #if PACKETVER == 20180117 - packetKeys(0x21F477F4,0x37F437F4,0x37F437F4); + packetKeys(0x21f477f4,0x37f437f4,0x37f437f4); #endif // 2018-01-24bRagexe, 2018-01-24bRagexeRE, 2018-01-31Ragexe #if PACKETVER == 20180124 || \ PACKETVER == 20180131 - packetKeys(0x7EAA1CE0,0x415D1CFD,0x4C8F19FA); + packetKeys(0x7eaa1ce0,0x415d1cfd,0x4c8f19fa); #endif // 2018-02-07bRagexe, 2018-02-07bRagexeRE, 2018-02-07cRagexe #if PACKETVER == 20180207 - packetKeys(0x45AA1B44,0x20E716B7,0x5388105C); + packetKeys(0x45aa1b44,0x20e716b7,0x5388105c); #endif // 2018-02-13aRagexe, 2018-02-13aRagexeRE, 2018-02-13bRagexe #if PACKETVER == 20180213 - packetKeys(0x189D69B2,0x43B85EAD,0x2B7A687E); + packetKeys(0x189d69b2,0x43b85ead,0x2b7a687e); #endif // 2018-02-21aRagexeRE, 2018-02-21bRagexe, 2018-02-21bRagexeRE #if PACKETVER == 20180221 - packetKeys(0x6E2F6233,0x193B0A66,0x0D1D2CA5); + packetKeys(0x6e2f6233,0x193b0a66,0x0d1d2ca5); #endif // 2018-03-07bRagexe, 2018-03-07bRagexeRE, 2018-03-09aRagexe #if PACKETVER == 20180307 || \ PACKETVER == 20180309 - packetKeys(0x47DA10EB,0x4B922CCF,0x765C5055); + packetKeys(0x47da10eb,0x4b922ccf,0x765c5055); #endif // 2018-03-14nRagexe #if PACKETVER == 20180314 - packetKeys(0x2FF07149,0x00596EA3,0x2B853026); + packetKeys(0x2ff07149,0x00596ea3,0x2b853026); #endif diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h index 1b6cd537c..5794ca309 100644 --- a/src/map/packets_keys_zero.h +++ b/src/map/packets_keys_zero.h @@ -29,7 +29,7 @@ /* 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 +// 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 || \ @@ -59,7 +59,9 @@ PACKETVER == 20180905 || \ PACKETVER == 20180912 || \ PACKETVER == 20180919 || \ - PACKETVER >= 20180928 + PACKETVER == 20180928 || \ + PACKETVER == 20181010 || \ + PACKETVER >= 20181024 packetKeys(0x00000000,0x00000000,0x00000000); #endif diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h index 53bdfa59d..34848f78a 100644 --- a/src/map/packets_shuffle_main.h +++ b/src/map/packets_shuffle_main.h @@ -3,6 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2018 Hercules Dev Team + * Copyright (C) 2018 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 @@ -3344,7 +3345,7 @@ packet(0x0969,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE #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 +// 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 #if PACKETVER == 20140611 || \ PACKETVER == 20150225 || \ PACKETVER == 20180315 || \ @@ -3370,7 +3371,11 @@ PACKETVER == 20180831 || \ PACKETVER == 20180912 || \ PACKETVER == 20180919 || \ - PACKETVER >= 20181002 + PACKETVER == 20181002 || \ + PACKETVER == 20181017 || \ + PACKETVER == 20181024 || \ + PACKETVER == 20181031 || \ + PACKETVER >= 20181107 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h index e77b97cac..de59bfb84 100644 --- a/src/map/packets_shuffle_re.h +++ b/src/map/packets_shuffle_re.h @@ -3,6 +3,7 @@ * http://herc.ws - http://github.com/HerculesWS/Hercules * * Copyright (C) 2013-2018 Hercules Dev Team + * Copyright (C) 2018 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 @@ -9662,7 +9663,7 @@ packet(0x083c,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK #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-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 #if PACKETVER == 20180704 || \ PACKETVER == 20180711 || \ PACKETVER == 20180718 || \ @@ -9672,7 +9673,10 @@ PACKETVER == 20180829 || \ PACKETVER == 20180912 || \ PACKETVER == 20180919 || \ - PACKETVER >= 20181002 + PACKETVER == 20181002 || \ + PACKETVER == 20181017 || \ + PACKETVER == 20181031 || \ + PACKETVER >= 20181107 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h index fedefbe3d..4d7dd9c7c 100644 --- a/src/map/packets_shuffle_zero.h +++ b/src/map/packets_shuffle_zero.h @@ -36,7 +36,7 @@ /* 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 +// 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 || \ @@ -66,7 +66,9 @@ PACKETVER == 20180905 || \ PACKETVER == 20180912 || \ PACKETVER == 20180919 || \ - PACKETVER >= 20180928 + PACKETVER == 20180928 || \ + PACKETVER == 20181010 || \ + PACKETVER >= 20181024 packet(0x0202,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS packet(0x022d,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER packet(0x023b,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h index 29a3355f7..374769728 100644 --- a/src/map/packets_struct.h +++ b/src/map/packets_struct.h @@ -324,7 +324,9 @@ enum packet_headers { achievementUpdateType = 0xa24, achievementRewardAckType = 0xa26, #endif // PACKETVER >= 20141016 -#if PACKETVER >= 20150513 // [4144] 0x09f8 handling in client from 2014-10-29aRagexe and 2014-03-26cRagexeRE +#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 @@ -378,12 +380,16 @@ enum packet_headers { clanLeave = 0x0989, ///< ZC_ACK_CLAN_LEAVE clanMessage = 0x098E, ///< ZC_NOTIFY_CLAN_CHAT #endif -#if PACKETVER >= 20150513 // [4144] 0x09f9 handled in client from 2014-10-29aRagexe and 2014-03-26cRagexeRE +#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 >= 20150513 +#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017 + questUpdateType = 0xafe, +#elif PACKETVER >= 20150513 questUpdateType = 0x9fa, #else questUpdateType = 0x2b5, @@ -445,6 +451,16 @@ enum packet_headers { #else guildLeave = 0x15a, #endif +#if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 + itemPreview = 0xb13, +#else + itemPreview = 0xab9, +#endif +#if PACKETVER_RE_NUM >= 20181031 + autoSpellList = 0xafb, +#else + autoSpellList = 0x1cd, +#endif }; #if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute @@ -1449,7 +1465,11 @@ struct packet_hotkey { * MISSION_HUNT_INFO_EX (PACKETVER >= 20150513) */ struct packet_mission_info_sub { -#if PACKETVER >= 20150513 +#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017 + uint32 huntIdent; + uint32 huntIdent2; + uint32 mobType; +#elif PACKETVER >= 20150513 uint32 huntIdent; uint32 mobType; #endif @@ -1819,7 +1839,11 @@ struct PACKET_ZC_NOTIFY_CLAN_CHAT { * PACKET_ZC_MISSION_HUNT_EX (PACKETVER >= 20150513) */ struct packet_quest_hunt_sub { -#if PACKETVER >= 20150513 +#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017 + uint32 huntIdent; + uint32 huntIdent2; + uint32 mobType; +#elif PACKETVER >= 20150513 uint32 huntIdent; uint32 mobType; #endif @@ -1853,7 +1877,10 @@ struct packet_quest_add_header { */ struct packet_quest_update_hunt { uint32 questID; -#if PACKETVER >= 20150513 +#if PACKETVER_ZERO_NUM >= 20181010 || PACKETVER >= 20181017 + uint32 huntIdent; + uint32 huntIdent2; +#elif PACKETVER >= 20150513 uint32 huntIdent; #else uint32 mob_id; @@ -1906,7 +1933,9 @@ struct PACKET_ZC_FORMATSTRING_MSG_COLOR { uint16 PacketType; uint16 PacketLength; uint16 messageId; +#if PACKETVER >= 20160406 uint32 color; +#endif char messageString[]; } __attribute__((packed)); @@ -2274,8 +2303,13 @@ struct PACKET_ZC_PROPERTY_HOMUN { uint16 mdef; uint16 flee; uint16 amotion; +#if PACKETVER < 20150513 + uint16 hp; + uint16 maxHp; +#else uint32 hp; uint32 maxHp; +#endif uint16 sp; uint16 maxSp; uint32 exp; @@ -2850,6 +2884,33 @@ struct PACKET_ZC_CAMERA_INFO { float latitude; } __attribute__((packed)); +struct PACKET_ZC_ITEM_PREVIEW { + int16 packetType; + int16 index; +#if PACKETVER_MAIN_NUM >= 20181017 || PACKETVER_RE_NUM >= 20181017 || PACKETVER_ZERO_NUM >= 20181024 + int8 isDamaged; +#endif + int16 refiningLevel; + struct EQUIPSLOTINFO slot; + struct ItemOptions option_data[MAX_ITEM_OPTIONS]; +} __attribute__((packed)); + +#if PACKETVER_RE_NUM >= 20181031 +#define PACKET_ZC_AUTOSPELLLIST PACKET_ZC_AUTOSPELLLIST2 +#else +#define PACKET_ZC_AUTOSPELLLIST PACKET_ZC_AUTOSPELLLIST1 +#endif + +struct PACKET_ZC_AUTOSPELLLIST1 { + int16 packetType; + int skills[7]; +} __attribute__((packed)); + +struct PACKET_ZC_AUTOSPELLLIST2 { + int16 packetType; + int16 packetLength; + int skills[]; +} __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) diff --git a/src/map/pc.c b/src/map/pc.c index 56f42690d..b8a6912ee 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4402,8 +4402,6 @@ static int pc_insert_card(struct map_session_data *sd, int idx_card, int idx_equ 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 @@ -4412,8 +4410,9 @@ static 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; } @@ -4423,14 +4422,13 @@ static int pc_modifybuyvalue(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; } diff --git a/src/map/quest.c b/src/map/quest.c index 02bf7638b..f10d6847f 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -30,6 +30,7 @@ #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" @@ -719,6 +720,8 @@ static bool quest_questinfo_validate(struct map_session_data *sd, struct questin 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; } @@ -901,6 +904,29 @@ static bool quest_questinfo_validate_quests(struct map_session_data *sd, struct } /** + * 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. @@ -993,5 +1019,6 @@ void quest_defaults(void) 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 305a48df1..206a7902f 100644 --- a/src/map/quest.h +++ b/src/map/quest.h @@ -92,6 +92,7 @@ struct quest_interface { 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); }; diff --git a/src/map/script.c b/src/map/script.c index 5eed58977..fc1ece663 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -6099,11 +6099,11 @@ static 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); @@ -6112,13 +6112,13 @@ static 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; @@ -6200,11 +6200,11 @@ static 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); @@ -6212,107 +6212,31 @@ static 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_variable("@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 -static 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_variable("@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_variable("@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; } @@ -11376,7 +11300,7 @@ static int buildin_getunits_sub(struct block_list *bl, va_list ap) (const void *)h64BPTRSIZE(bl->id), ref); (*count)++; - return 0; + return 1; } static int buildin_getunits_sub_pc(struct map_session_data *sd, va_list ap) @@ -11448,18 +11372,10 @@ static BUILDIN(getunits) int16 x2 = script_getnum(st, 8); int16 y2 = script_getnum(st, 9); - // FIXME: map_foreachinarea does NOT stop iterating when the callback - // function returns -1. we still limit the array size, but - // this doesn't break the loop. We need a foreach function - // that behaves like map_foreachiddb, but for areas - map->foreachinarea(buildin_getunits_sub, m, x1, y1, x2, y2, type, + map->forcountinarea(buildin_getunits_sub, m, x1, y1, x2, y2, limit, type, st, sd, id, start, &count, limit, name, ref, type); } else { - // FIXME: map_foreachinmap does NOT stop iterating when the callback - // function returns -1. we still limit the array size, but - // this doesn't break the loop. We need a foreach function - // that behaves like map_foreachiddb, but for maps - map->foreachinmap(buildin_getunits_sub, m, type, + map->forcountinmap(buildin_getunits_sub, m, limit, type, st, sd, id, start, &count, limit, name, ref, type); } } else { @@ -14415,6 +14331,9 @@ static BUILDIN(getiteminfo) 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); @@ -14681,6 +14600,9 @@ static BUILDIN(setiteminfo) 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); @@ -16795,6 +16717,63 @@ static BUILDIN(getdatatype) 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> //------------------------------------------------------- @@ -21171,6 +21150,17 @@ static BUILDIN(setquestinfo) 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; @@ -21324,18 +21314,7 @@ static BUILDIN(showevent) } } -#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 + icon = quest->questinfo_validate_icon(icon); clif->quest_show_event(sd, &nd->bl, icon, color); return true; @@ -24810,6 +24789,16 @@ static BUILDIN(changecamera) 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; +} + /** * Adds a built-in script function. * @@ -24978,7 +24967,7 @@ static void script_parse_builtin(void) 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*"), @@ -25259,6 +25248,8 @@ static void script_parse_builtin(void) 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"), @@ -25544,6 +25535,8 @@ static void script_parse_builtin(void) // camera BUILDIN_DEF(camerainfo, ""), BUILDIN_DEF(changecamera, "iii?"), + + BUILDIN_DEF(itempreview, "i"), }; int i, len = ARRAYLENGTH(BUILDIN); RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up @@ -25590,6 +25583,8 @@ static void script_hardcoded_constants(void) 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); @@ -25859,6 +25854,7 @@ static void script_hardcoded_constants(void) 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); @@ -25942,6 +25938,7 @@ static void script_hardcoded_constants(void) 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); @@ -25949,6 +25946,20 @@ static void script_hardcoded_constants(void) 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("Renewal"); #ifdef RENEWAL script->set_constant("RENEWAL", 1, false, false); diff --git a/src/map/script.h b/src/map/script.h index 9c72b793c..549ad3284 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -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 @@ -177,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)); \ @@ -450,6 +455,7 @@ enum script_iteminfo_types { ITEMINFO_VIEWID, ITEMINFO_MATK, ITEMINFO_VIEWSPRITE, + ITEMINFO_TRADE, ITEMINFO_MAX }; diff --git a/src/map/skill.c b/src/map/skill.c index 4eaab5457..9857badbe 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4138,7 +4138,7 @@ static 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; } @@ -12644,7 +12644,7 @@ static int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int 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; @@ -12938,7 +12938,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b } - 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; @@ -12969,10 +12969,10 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b 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 + @@ -13203,9 +13203,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b 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; @@ -13266,7 +13264,7 @@ static int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *b 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; @@ -16630,10 +16628,10 @@ static 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) + @@ -16766,6 +16764,27 @@ static 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); +} + /*========================================== * *------------------------------------------*/ @@ -16776,6 +16795,7 @@ static int skill_trap_splash(struct block_list *bl, va_list ap) 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); @@ -16870,7 +16890,7 @@ static 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; @@ -17585,7 +17605,7 @@ static 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; @@ -18973,7 +18993,7 @@ static 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: @@ -18982,7 +19002,7 @@ static 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. @@ -21578,6 +21598,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; diff --git a/src/map/skill.h b/src/map/skill.h index 97134224e..0ace19927 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -2059,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); diff --git a/src/map/status.c b/src/map/status.c index 2bd3700b3..370432ce7 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -10557,20 +10557,9 @@ static bool status_is_immune_to_status(struct status_change *sc, enum sc_type ty if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) // Confirmed. return true; // 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: @@ -10586,20 +10575,9 @@ static bool status_is_immune_to_status(struct status_change *sc, enum sc_type ty if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) return true; // 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: @@ -10608,7 +10586,6 @@ static bool status_is_immune_to_status(struct status_change *sc, enum sc_type ty case SC_PYREXIA: case SC_OBLIVIONCURSE: case SC_LEECHESEND: - case SC_DEEP_SLEEP: case SC_SATURDAY_NIGHT_FEVER: case SC__BODYPAINT: case SC__ENERVATION: diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index a8d48546d..81e25f033 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -282,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); @@ -2628,6 +2630,8 @@ 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_item_preview) (struct map_session_data **sd, int *n); +typedef void (*HPMHOOK_post_clif_item_preview) (struct map_session_data *sd, int n); #endif // MAP_CLIF_H #ifdef COMMON_CORE_H /* cmdline */ typedef void (*HPMHOOK_pre_cmdline_init) (void); @@ -6480,6 +6484,8 @@ typedef bool (*HPMHOOK_pre_quest_questinfo_validate_homunculus_type) (struct map 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 @@ -7198,6 +7204,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); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 889faa44c..b0b2e7a32 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -236,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; @@ -2220,6 +2222,8 @@ struct { 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_item_preview_pre; + struct HPMHookPoint *HP_clif_item_preview_post; struct HPMHookPoint *HP_cmdline_init_pre; struct HPMHookPoint *HP_cmdline_init_post; struct HPMHookPoint *HP_cmdline_final_pre; @@ -5008,6 +5012,8 @@ struct { 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; @@ -5714,6 +5720,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; @@ -6831,6 +6839,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; @@ -8815,6 +8825,8 @@ struct { int HP_clif_camera_showWindow_post; int HP_clif_camera_change_pre; int HP_clif_camera_change_post; + int HP_clif_item_preview_pre; + int HP_clif_item_preview_post; int HP_cmdline_init_pre; int HP_cmdline_init_post; int HP_cmdline_final_pre; @@ -11603,6 +11615,8 @@ struct { 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; @@ -12309,6 +12323,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; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index b11e2d61c..508465411 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -135,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) }, @@ -1134,6 +1135,7 @@ struct HookingPointData HookingPoints[] = { { 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->item_preview, HP_clif_item_preview) }, /* cmdline_interface */ { HP_POP(cmdline->init, HP_cmdline_init) }, { HP_POP(cmdline->final, HP_cmdline_final) }, @@ -2564,6 +2566,7 @@ struct HookingPointData HookingPoints[] = { { 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) }, @@ -2923,6 +2926,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) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 6405c03a2..fa80a68fd 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -2859,6 +2859,32 @@ void HP_battle_reflect_damage(struct block_list *target, struct block_list *src, } 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; @@ -28939,6 +28965,32 @@ void HP_clif_camera_change(struct map_session_data *sd, float range, float rotat } 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; +} /* cmdline_interface */ void HP_cmdline_init(void) { int hIndex = 0; @@ -66709,6 +66761,33 @@ bool HP_quest_questinfo_validate_quests(struct map_session_data *sd, struct ques } 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) { @@ -76342,6 +76421,32 @@ int HP_skill_timerskill(int tid, int64 tick, int id, intptr_t 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; diff --git a/src/tool/Makefile.in b/src/tool/Makefile.in deleted file mode 100644 index d4c178218..000000000 --- a/src/tool/Makefile.in +++ /dev/null @@ -1,88 +0,0 @@ -# This file is part of Hercules. -# http://herc.ws - http://github.com/HerculesWS/Hercules -# -# Copyright (C) 2012-2018 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) - -@SET_MAKE@ - -CC = @CC@ -export CC - -##################################################################### -.PHONY: all clean buildclean help - -all: Makefile - -buildclean: - @echo " CLEAN tool (build temp files)" - @rm -rf obj_all/*.o - -clean: buildclean - @echo " CLEAN tool" - -help: - @echo "possible targets are 'all' 'clean' 'help'" - @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): $(COMMON_H) $(CONFIG_H) $(LIBCONFIG_H) - @echo " MAKE $@" - @$(MAKE) -C ../.. sysinfo - -obj_all: - @echo " MKDIR obj_all" - @-mkdir obj_all - -obj_all/%.o: %.c $(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) |