diff options
4 files changed, 33 insertions, 0 deletions
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc index 593f21ba5..589642b42 100644 --- a/src/plugins/HPMHooking/HPMHooking.Defs.inc +++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc @@ -1170,6 +1170,8 @@ typedef int (*HPMHOOK_pre_clif_skill_itemlistwindow) (struct map_session_data ** typedef int (*HPMHOOK_post_clif_skill_itemlistwindow) (int retVal___, struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); typedef void (*HPMHOOK_pre_clif_sc_load) (struct block_list **bl, int *tid, enum send_target *target, int *type, int *val1, int *val2, int *val3); typedef void (*HPMHOOK_post_clif_sc_load) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3); +typedef void (*HPMHOOK_pre_clif_sc_continue) (struct block_list **bl, int *tid, enum send_target *target, int *type, int *val1, int *val2, int *val3); +typedef void (*HPMHOOK_post_clif_sc_continue) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3); typedef void (*HPMHOOK_pre_clif_sc_end) (struct block_list **bl, int *tid, enum send_target *target, int *type); typedef void (*HPMHOOK_post_clif_sc_end) (struct block_list *bl, int tid, enum send_target target, int type); typedef void (*HPMHOOK_pre_clif_initialstatus) (struct map_session_data **sd); diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index 676d77493..74cbbabd4 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -836,6 +836,8 @@ struct { struct HPMHookPoint *HP_clif_skill_itemlistwindow_post; struct HPMHookPoint *HP_clif_sc_load_pre; struct HPMHookPoint *HP_clif_sc_load_post; + struct HPMHookPoint *HP_clif_sc_continue_pre; + struct HPMHookPoint *HP_clif_sc_continue_post; struct HPMHookPoint *HP_clif_sc_end_pre; struct HPMHookPoint *HP_clif_sc_end_post; struct HPMHookPoint *HP_clif_initialstatus_pre; @@ -6789,6 +6791,8 @@ struct { int HP_clif_skill_itemlistwindow_post; int HP_clif_sc_load_pre; int HP_clif_sc_load_post; + int HP_clif_sc_continue_pre; + int HP_clif_sc_continue_post; int HP_clif_sc_end_pre; int HP_clif_sc_end_post; int HP_clif_initialstatus_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 089bfb0ac..eef694ea8 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -440,6 +440,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(clif->autoshadowspell_list, HP_clif_autoshadowspell_list) }, { HP_POP(clif->skill_itemlistwindow, HP_clif_skill_itemlistwindow) }, { HP_POP(clif->sc_load, HP_clif_sc_load) }, + { HP_POP(clif->sc_continue, HP_clif_sc_continue) }, { HP_POP(clif->sc_end, HP_clif_sc_end) }, { HP_POP(clif->initialstatus, HP_clif_initialstatus) }, { HP_POP(clif->cooldown_list, HP_clif_cooldown_list) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index b273e40a7..8a294e3f2 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -10866,6 +10866,32 @@ void HP_clif_sc_load(struct block_list *bl, int tid, enum send_target target, in } return; } +void HP_clif_sc_continue(struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3) { + int hIndex = 0; + if( HPMHooks.count.HP_clif_sc_continue_pre ) { + void (*preHookFunc) (struct block_list **bl, int *tid, enum send_target *target, int *type, int *val1, int *val2, int *val3); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_clif_sc_continue_pre[hIndex].func; + preHookFunc(&bl, &tid, &target, &type, &val1, &val2, &val3); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.clif.sc_continue(bl, tid, target, type, val1, val2, val3); + } + if( HPMHooks.count.HP_clif_sc_continue_post ) { + void (*postHookFunc) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3); + for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_sc_continue_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_clif_sc_continue_post[hIndex].func; + postHookFunc(bl, tid, target, type, val1, val2, val3); + } + } + return; +} void HP_clif_sc_end(struct block_list *bl, int tid, enum send_target target, int type) { int hIndex = 0; if( HPMHooks.count.HP_clif_sc_end_pre ) { |