diff options
-rw-r--r-- | src/bldg.cc | 3 | ||||
-rw-r--r-- | src/q_eol.cc | 11 | ||||
-rw-r--r-- | src/types.h | 5 |
3 files changed, 12 insertions, 7 deletions
diff --git a/src/bldg.cc b/src/bldg.cc index d048498c..15d99fb0 100644 --- a/src/bldg.cc +++ b/src/bldg.cc @@ -858,7 +858,8 @@ static bool_ castle_quest(int y, int x) /* Mark quest as done (but failed) */ q_ptr->status = QUEST_STATUS_FAILED_DONE; - process_hooks(HOOK_QUEST_FAIL, "(d)", plots[plot]); + hook_quest_fail_in in = { plots[plot] }; + process_hooks_new(HOOK_QUEST_FAIL, &in, NULL); return (FALSE); } diff --git a/src/q_eol.cc b/src/q_eol.cc index 8c0eaaa7..a38135db 100644 --- a/src/q_eol.cc +++ b/src/q_eol.cc @@ -117,11 +117,10 @@ static bool_ quest_eol_finish_hook(const char *fmt) return TRUE; } -static bool_ quest_eol_fail_hook(const char *fmt) +static bool_ quest_eol_fail_hook(void *, void *in_, void *) { - s32b q_idx; - - q_idx = get_next_arg(fmt); + struct hook_quest_fail_in *in = static_cast<struct hook_quest_fail_in *>(in_); + s32b q_idx = in->q_idx; if (q_idx != QUEST_EOL) return FALSE; @@ -130,7 +129,7 @@ static bool_ quest_eol_fail_hook(const char *fmt) /* Continue the plot */ *(quest[q_idx].plot) = QUEST_NULL; - del_hook(HOOK_QUEST_FAIL, quest_eol_fail_hook); + del_hook_new(HOOK_QUEST_FAIL, quest_eol_fail_hook); process_hooks_restart = TRUE; return TRUE; @@ -195,7 +194,7 @@ bool_ quest_eol_init_hook(int q) add_hook_new(HOOK_MONSTER_DEATH, quest_eol_death_hook, "eol_death", NULL); add_hook_new(HOOK_GEN_QUEST, quest_eol_gen_hook, "eol_gen", NULL); add_hook_new(HOOK_STAIR, quest_eol_stair_hook, "eol_stair", NULL); - add_hook (HOOK_QUEST_FAIL, quest_eol_fail_hook, "eol_fail"); + add_hook_new(HOOK_QUEST_FAIL, quest_eol_fail_hook, "eol_fail", NULL); add_hook (HOOK_QUEST_FINISH, quest_eol_finish_hook, "eol_finish"); } return (FALSE); diff --git a/src/types.h b/src/types.h index 2f566776..0f963f5e 100644 --- a/src/types.h +++ b/src/types.h @@ -2295,6 +2295,11 @@ struct hook_eat_out { bool_ ident; }; +typedef struct hook_quest_fail_in hook_quest_fail_in; +struct hook_quest_fail_in { + s16b q_idx; +}; + typedef enum { STAIRS_UP, STAIRS_DOWN } stairs_direction; typedef struct hook_stair_in hook_stair_in; |