summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bldg.cc3
-rw-r--r--src/q_eol.cc11
-rw-r--r--src/types.h5
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;