diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h index a8d6f53aca3..006c43d742b 100644 --- a/src/common/HPMDataCheck.h +++ b/src/common/HPMDataCheck.h @@ -254,6 +254,12 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { #else #define COMMON_BASE62_H #endif // COMMON_BASE62_H + #ifdef COMMON_CHARLOGINPACKETS_H + { "PACKET_CHARLOGIN_ONLINE_ACCOUNTS", sizeof(struct PACKET_CHARLOGIN_ONLINE_ACCOUNTS), SERVER_TYPE_ALL }, + { "PACKET_CHARLOGIN_SET_ACCOUNT_ONLINE", sizeof(struct PACKET_CHARLOGIN_SET_ACCOUNT_ONLINE), SERVER_TYPE_ALL }, + #else + #define COMMON_CHARLOGINPACKETS_H + #endif // COMMON_CHARLOGINPACKETS_H #ifdef COMMON_CHARMAPPACKETS_H { "PACKET_CHARMAP_AGENCY_JOIN_PARTY", sizeof(struct PACKET_CHARMAP_AGENCY_JOIN_PARTY), SERVER_TYPE_ALL }, { "PACKET_CHARMAP_GUILD_EMBLEM", sizeof(struct PACKET_CHARMAP_GUILD_EMBLEM), SERVER_TYPE_ALL }, @@ -322,6 +328,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = { #endif // COMMON_HPMI_H #ifdef COMMON_MAPCHARPACKETS_H { "PACKET_MAPCHAR_AGENCY_JOIN_PARTY_REQ", sizeof(struct PACKET_MAPCHAR_AGENCY_JOIN_PARTY_REQ), SERVER_TYPE_ALL }, + { "PACKET_MAPCHAR_AUTH_REQ", sizeof(struct PACKET_MAPCHAR_AUTH_REQ), SERVER_TYPE_ALL }, { "PACKET_MAPCHAR_GUILD_EMBLEM", sizeof(struct PACKET_MAPCHAR_GUILD_EMBLEM), SERVER_TYPE_ALL }, #else #define COMMON_MAPCHARPACKETS_H diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 5245c3d6c95..7f45d7957fd 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -7546,6 +7546,12 @@ typedef bool (*HPMHOOK_pre_pc_auto_exp_insurance) (struct map_session_data **sd) typedef bool (*HPMHOOK_post_pc_auto_exp_insurance) (bool retVal___, struct map_session_data *sd); typedef void (*HPMHOOK_pre_pc_crimson_marker_clear) (struct map_session_data **sd); typedef void (*HPMHOOK_post_pc_crimson_marker_clear) (struct map_session_data *sd); +typedef bool (*HPMHOOK_pre_pc_is_own_skill) (struct map_session_data **sd, uint16 *skill_id); +typedef bool (*HPMHOOK_post_pc_is_own_skill) (bool retVal___, struct map_session_data *sd, uint16 skill_id); +typedef void (*HPMHOOK_pre_pc_clear_existing_cloneskill) (struct map_session_data **sd, bool *clear_vars); +typedef void (*HPMHOOK_post_pc_clear_existing_cloneskill) (struct map_session_data *sd, bool clear_vars); +typedef void (*HPMHOOK_pre_pc_clear_existing_reproduceskill) (struct map_session_data **sd, bool *clear_vars); +typedef void (*HPMHOOK_post_pc_clear_existing_reproduceskill) (struct map_session_data *sd, bool clear_vars); #endif // MAP_PC_H #ifdef MAP_NPC_H /* libpcre */ typedef pcre* (*HPMHOOK_pre_libpcre_compile) (const char **pattern, int *options, const char ***errptr, int **erroffset, const unsigned char **tableptr); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 67a35edf5f8..8474299307b 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -5524,6 +5524,12 @@ struct { struct HPMHookPoint *HP_pc_auto_exp_insurance_post; struct HPMHookPoint *HP_pc_crimson_marker_clear_pre; struct HPMHookPoint *HP_pc_crimson_marker_clear_post; + struct HPMHookPoint *HP_pc_is_own_skill_pre; + struct HPMHookPoint *HP_pc_is_own_skill_post; + struct HPMHookPoint *HP_pc_clear_existing_cloneskill_pre; + struct HPMHookPoint *HP_pc_clear_existing_cloneskill_post; + struct HPMHookPoint *HP_pc_clear_existing_reproduceskill_pre; + struct HPMHookPoint *HP_pc_clear_existing_reproduceskill_post; struct HPMHookPoint *HP_libpcre_compile_pre; struct HPMHookPoint *HP_libpcre_compile_post; struct HPMHookPoint *HP_libpcre_study_pre; @@ -13109,6 +13115,12 @@ struct { int HP_pc_auto_exp_insurance_post; int HP_pc_crimson_marker_clear_pre; int HP_pc_crimson_marker_clear_post; + int HP_pc_is_own_skill_pre; + int HP_pc_is_own_skill_post; + int HP_pc_clear_existing_cloneskill_pre; + int HP_pc_clear_existing_cloneskill_post; + int HP_pc_clear_existing_reproduceskill_pre; + int HP_pc_clear_existing_reproduceskill_post; int HP_libpcre_compile_pre; int HP_libpcre_compile_post; int HP_libpcre_study_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 1e9691b214d..a710ed6e6fe 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -2827,6 +2827,9 @@ struct HookingPointData HookingPoints[] = { { HP_POP(pc->expandInventory, HP_pc_expandInventory) }, { HP_POP(pc->auto_exp_insurance, HP_pc_auto_exp_insurance) }, { HP_POP(pc->crimson_marker_clear, HP_pc_crimson_marker_clear) }, + { HP_POP(pc->is_own_skill, HP_pc_is_own_skill) }, + { HP_POP(pc->clear_existing_cloneskill, HP_pc_clear_existing_cloneskill) }, + { HP_POP(pc->clear_existing_reproduceskill, HP_pc_clear_existing_reproduceskill) }, /* pcre_interface */ { HP_POP(libpcre->compile, HP_libpcre_compile) }, { HP_POP(libpcre->study, HP_libpcre_study) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index 5889323c1b5..7dc4d79b5b3 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -73497,6 +73497,85 @@ void HP_pc_crimson_marker_clear(struct map_session_data *sd) { } return; } +bool HP_pc_is_own_skill(struct map_session_data *sd, uint16 skill_id) { + int hIndex = 0; + bool retVal___ = false; + if (HPMHooks.count.HP_pc_is_own_skill_pre > 0) { + bool (*preHookFunc) (struct map_session_data **sd, uint16 *skill_id); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_is_own_skill_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_pc_is_own_skill_pre[hIndex].func; + retVal___ = preHookFunc(&sd, &skill_id); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return retVal___; + } + } + { + retVal___ = HPMHooks.source.pc.is_own_skill(sd, skill_id); + } + if (HPMHooks.count.HP_pc_is_own_skill_post > 0) { + bool (*postHookFunc) (bool retVal___, struct map_session_data *sd, uint16 skill_id); + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_is_own_skill_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_pc_is_own_skill_post[hIndex].func; + retVal___ = postHookFunc(retVal___, sd, skill_id); + } + } + return retVal___; +} +void HP_pc_clear_existing_cloneskill(struct map_session_data *sd, bool clear_vars) { + int hIndex = 0; + if (HPMHooks.count.HP_pc_clear_existing_cloneskill_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, bool *clear_vars); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_existing_cloneskill_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_pc_clear_existing_cloneskill_pre[hIndex].func; + preHookFunc(&sd, &clear_vars); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.pc.clear_existing_cloneskill(sd, clear_vars); + } + if (HPMHooks.count.HP_pc_clear_existing_cloneskill_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, bool clear_vars); + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_existing_cloneskill_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_pc_clear_existing_cloneskill_post[hIndex].func; + postHookFunc(sd, clear_vars); + } + } + return; +} +void HP_pc_clear_existing_reproduceskill(struct map_session_data *sd, bool clear_vars) { + int hIndex = 0; + if (HPMHooks.count.HP_pc_clear_existing_reproduceskill_pre > 0) { + void (*preHookFunc) (struct map_session_data **sd, bool *clear_vars); + *HPMforce_return = false; + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_existing_reproduceskill_pre; hIndex++) { + preHookFunc = HPMHooks.list.HP_pc_clear_existing_reproduceskill_pre[hIndex].func; + preHookFunc(&sd, &clear_vars); + } + if (*HPMforce_return) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.pc.clear_existing_reproduceskill(sd, clear_vars); + } + if (HPMHooks.count.HP_pc_clear_existing_reproduceskill_post > 0) { + void (*postHookFunc) (struct map_session_data *sd, bool clear_vars); + for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_clear_existing_reproduceskill_post; hIndex++) { + postHookFunc = HPMHooks.list.HP_pc_clear_existing_reproduceskill_post[hIndex].func; + postHookFunc(sd, clear_vars); + } + } + return; +} /* pcre_interface */ pcre* HP_libpcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr) { int hIndex = 0;