summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bldg.cc3
-rw-r--r--src/q_betwen.cc17
-rw-r--r--src/q_dragons.cc11
-rw-r--r--src/q_eol.cc19
-rw-r--r--src/q_evil.cc11
-rw-r--r--src/q_haunted.cc11
-rw-r--r--src/q_nazgul.cc15
-rw-r--r--src/q_nirna.cc17
-rw-r--r--src/q_poison.cc15
-rw-r--r--src/q_spider.cc15
-rw-r--r--src/q_thief.cc15
-rw-r--r--src/q_troll.cc15
-rw-r--r--src/q_wight.cc14
-rw-r--r--src/q_wolves.cc11
-rw-r--r--src/types.h5
15 files changed, 94 insertions, 100 deletions
diff --git a/src/bldg.cc b/src/bldg.cc
index 15d99fb0..9875a264 100644
--- a/src/bldg.cc
+++ b/src/bldg.cc
@@ -838,7 +838,8 @@ static bool_ castle_quest(int y, int x)
/* Rewarded quest */
q_ptr->status = QUEST_STATUS_FINISHED;
- process_hooks(HOOK_QUEST_FINISH, "(d)", plots[plot]);
+ struct hook_quest_finish_in in = { plots[plot] };
+ process_hooks_new(HOOK_QUEST_FINISH, &in, NULL);
return (TRUE);
}
diff --git a/src/q_betwen.cc b/src/q_betwen.cc
index b51c8c6a..117edeba 100644
--- a/src/q_betwen.cc
+++ b/src/q_betwen.cc
@@ -86,13 +86,12 @@ static bool_ quest_between_gen_hook(void *, void *, void *)
return TRUE;
}
-static bool_ quest_between_finish_hook(const char *fmt)
+static bool_ quest_between_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
object_type forge, *q_ptr;
- q_idx = get_next_arg(fmt);
-
if (q_idx != QUEST_BETWEEN) return FALSE;
c_put_str(TERM_YELLOW, "Ah you finally arrived, I hope your travel wasn't too hard.", 8, 0);
@@ -119,7 +118,7 @@ static bool_ quest_between_finish_hook(const char *fmt)
/* Continue the plot */
*(quest[q_idx].plot) = QUEST_NULL;
- del_hook(HOOK_QUEST_FINISH, quest_between_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_between_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -187,10 +186,10 @@ bool_ quest_between_init_hook(int q)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MOVE, quest_between_move_hook, "between_move", NULL);
- add_hook_new(HOOK_GEN_QUEST, quest_between_gen_hook, "between_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_between_finish_hook, "between_finish");
- add_hook_new(HOOK_MONSTER_DEATH, quest_between_death_hook, "between_death", NULL);
+ add_hook_new(HOOK_MOVE, quest_between_move_hook, "between_move", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_between_gen_hook, "between_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_between_finish_hook, "between_finish", NULL);
+ add_hook_new(HOOK_MONSTER_DEATH, quest_between_death_hook, "between_death", NULL);
}
add_hook_new(HOOK_CHAR_DUMP, quest_between_dump_hook, "between_dump", NULL);
add_hook_new(HOOK_INIT_QUEST, quest_between_forbid_hook, "between_forbid", NULL);
diff --git a/src/q_dragons.cc b/src/q_dragons.cc
index 604fd0ad..2ee537de 100644
--- a/src/q_dragons.cc
+++ b/src/q_dragons.cc
@@ -123,11 +123,10 @@ static bool_ quest_dragons_death_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_dragons_finish_hook(const char *fmt)
+static bool_ quest_dragons_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_DRAGONS) return FALSE;
@@ -145,8 +144,8 @@ bool_ quest_dragons_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
add_hook_new(HOOK_MONSTER_DEATH, quest_dragons_death_hook, "dragons_monster_death", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_dragons_finish_hook, "dragons_finish");
- add_hook_new(HOOK_GEN_QUEST, quest_dragons_gen_hook, "dragons_geb", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_dragons_finish_hook, "dragons_finish", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_dragons_gen_hook, "dragons_geb", NULL);
}
return (FALSE);
}
diff --git a/src/q_eol.cc b/src/q_eol.cc
index a38135db..9286746d 100644
--- a/src/q_eol.cc
+++ b/src/q_eol.cc
@@ -84,12 +84,11 @@ static bool_ quest_eol_gen_hook(void *, void *, void *)
return TRUE;
}
-static bool_ quest_eol_finish_hook(const char *fmt)
+static bool_ quest_eol_finish_hook(void *, void *in_, void *)
{
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
object_type forge, *q_ptr;
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
if (q_idx != QUEST_EOL) return FALSE;
@@ -111,7 +110,7 @@ static bool_ quest_eol_finish_hook(const char *fmt)
*(quest[q_idx].plot) = QUEST_NIRNAETH;
quest[*(quest[q_idx].plot)].init(*(quest[q_idx].plot));
- del_hook(HOOK_QUEST_FINISH, quest_eol_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_eol_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -191,11 +190,11 @@ bool_ quest_eol_init_hook(int q)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- 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_new(HOOK_QUEST_FAIL, quest_eol_fail_hook, "eol_fail", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_eol_finish_hook, "eol_finish");
+ 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_new(HOOK_QUEST_FAIL, quest_eol_fail_hook, "eol_fail", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_eol_finish_hook, "eol_finish", NULL);
}
return (FALSE);
}
diff --git a/src/q_evil.cc b/src/q_evil.cc
index 40587a77..da0816ae 100644
--- a/src/q_evil.cc
+++ b/src/q_evil.cc
@@ -91,11 +91,10 @@ static bool_ quest_evil_death_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_evil_finish_hook(const char *fmt)
+static bool_ quest_evil_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_EVIL) return FALSE;
@@ -113,8 +112,8 @@ bool_ quest_evil_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
add_hook_new(HOOK_MONSTER_DEATH, quest_evil_death_hook, "evil_monster_death", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_evil_finish_hook, "evil_finish");
- add_hook_new(HOOK_GEN_QUEST, quest_evil_gen_hook, "evil_geb", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_evil_finish_hook, "evil_finish", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_evil_gen_hook, "evil_geb", NULL);
}
return (FALSE);
}
diff --git a/src/q_haunted.cc b/src/q_haunted.cc
index 9af5f48f..7b6d7f15 100644
--- a/src/q_haunted.cc
+++ b/src/q_haunted.cc
@@ -121,11 +121,10 @@ static bool_ quest_haunted_death_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_haunted_finish_hook(const char *fmt)
+static bool_ quest_haunted_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_HAUNTED) return FALSE;
@@ -143,8 +142,8 @@ bool_ quest_haunted_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
add_hook_new(HOOK_MONSTER_DEATH, quest_haunted_death_hook, "haunted_monster_death", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_haunted_finish_hook, "haunted_finish");
- add_hook_new(HOOK_GEN_QUEST, quest_haunted_gen_hook, "haunted_geb", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_haunted_finish_hook, "haunted_finish", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_haunted_gen_hook, "haunted_geb", NULL);
}
return (FALSE);
}
diff --git a/src/q_nazgul.cc b/src/q_nazgul.cc
index 0be2e5f5..e54f0534 100644
--- a/src/q_nazgul.cc
+++ b/src/q_nazgul.cc
@@ -35,12 +35,11 @@ static bool_ quest_nazgul_gen_hook(void *, void *in_, void *)
return FALSE;
}
-static bool_ quest_nazgul_finish_hook(const char *fmt)
+static bool_ quest_nazgul_finish_hook(void *, void *in_, void *)
{
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
object_type forge, *q_ptr;
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
if (q_idx != QUEST_NAZGUL) return FALSE;
@@ -60,7 +59,7 @@ static bool_ quest_nazgul_finish_hook(const char *fmt)
/* End the plot */
*(quest[q_idx].plot) = QUEST_NULL;
- del_hook(HOOK_QUEST_FINISH, quest_nazgul_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_nazgul_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -114,9 +113,9 @@ bool_ quest_nazgul_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MONSTER_DEATH, quest_nazgul_death_hook, "nazgul_death", NULL);
- add_hook_new(HOOK_WILD_GEN, quest_nazgul_gen_hook, "nazgul_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_nazgul_finish_hook, "nazgul_finish");
+ add_hook_new(HOOK_MONSTER_DEATH, quest_nazgul_death_hook, "nazgul_death", NULL);
+ add_hook_new(HOOK_WILD_GEN, quest_nazgul_gen_hook, "nazgul_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_nazgul_finish_hook, "nazgul_finish", NULL);
}
add_hook_new(HOOK_CHAR_DUMP, quest_nazgul_dump_hook, "nazgul_dump", NULL);
add_hook_new(HOOK_INIT_QUEST, quest_nazgul_forbid_hook, "nazgul_forbid", NULL);
diff --git a/src/q_nirna.cc b/src/q_nirna.cc
index 9306ed31..145c9953 100644
--- a/src/q_nirna.cc
+++ b/src/q_nirna.cc
@@ -42,11 +42,10 @@ static bool_ quest_nirnaeth_gen_hook(void *, void *, void *)
return TRUE;
}
-static bool_ quest_nirnaeth_finish_hook(const char *fmt)
+static bool_ quest_nirnaeth_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_NIRNAETH) return FALSE;
@@ -74,7 +73,7 @@ static bool_ quest_nirnaeth_finish_hook(const char *fmt)
/* Continue the plot */
*(quest[q_idx].plot) = QUEST_NULL;
- del_hook(HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -107,10 +106,10 @@ bool_ quest_nirnaeth_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MONSTER_DEATH, quest_nirnaeth_death_hook, "nirnaeth_death", NULL);
- add_hook_new(HOOK_GEN_QUEST, quest_nirnaeth_gen_hook, "nirnaeth_gen", NULL);
- add_hook_new(HOOK_STAIR, quest_nirnaeth_stair_hook, "nirnaeth_stair", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook, "nirnaeth_finish");
+ add_hook_new(HOOK_MONSTER_DEATH, quest_nirnaeth_death_hook, "nirnaeth_death", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_nirnaeth_gen_hook, "nirnaeth_gen", NULL);
+ add_hook_new(HOOK_STAIR, quest_nirnaeth_stair_hook, "nirnaeth_stair", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook, "nirnaeth_finish", NULL);
}
return (FALSE);
}
diff --git a/src/q_poison.cc b/src/q_poison.cc
index 47868a9e..0bbe6f8b 100644
--- a/src/q_poison.cc
+++ b/src/q_poison.cc
@@ -103,12 +103,11 @@ static bool_ quest_poison_gen_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_poison_finish_hook(const char *fmt)
+static bool_ quest_poison_finish_hook(void *, void *in_, void *)
{
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
object_type forge, *q_ptr;
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
if (q_idx != QUEST_POISON) return FALSE;
@@ -129,7 +128,7 @@ static bool_ quest_poison_finish_hook(const char *fmt)
/* Continue the plot */
*(quest[q_idx].plot) = QUEST_NULL;
- del_hook(HOOK_QUEST_FINISH, quest_poison_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_poison_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -235,9 +234,9 @@ bool_ quest_poison_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_DROP, quest_poison_drop_hook, "poison_drop", NULL);
- add_hook_new(HOOK_WILD_GEN, quest_poison_gen_hook, "poison_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_poison_finish_hook, "poison_finish");
+ add_hook_new(HOOK_DROP, quest_poison_drop_hook, "poison_drop", NULL);
+ add_hook_new(HOOK_WILD_GEN, quest_poison_gen_hook, "poison_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_poison_finish_hook, "poison_finish", NULL);
}
if (cquest.status < QUEST_STATUS_COMPLETED)
{
diff --git a/src/q_spider.cc b/src/q_spider.cc
index f3c2f265..97e2693a 100644
--- a/src/q_spider.cc
+++ b/src/q_spider.cc
@@ -72,12 +72,11 @@ static bool_ quest_spider_death_hook(void *, void *, void *)
return (FALSE);
}
-static bool_ quest_spider_finish_hook(const char *fmt)
+static bool_ quest_spider_finish_hook(void *, void *in_, void *)
{
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
object_type forge, *q_ptr;
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_SPIDER) return FALSE;
@@ -97,7 +96,7 @@ static bool_ quest_spider_finish_hook(const char *fmt)
*(quest[q_idx].plot) = QUEST_POISON;
quest[*(quest[q_idx].plot)].init(*(quest[q_idx].plot));
- del_hook(HOOK_QUEST_FINISH, quest_spider_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_spider_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -107,9 +106,9 @@ bool_ quest_spider_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MONSTER_DEATH, quest_spider_death_hook, "spider_death", NULL);
- add_hook_new(HOOK_GEN_QUEST, quest_spider_gen_hook, "spider_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_spider_finish_hook, "spider_finish");
+ add_hook_new(HOOK_MONSTER_DEATH, quest_spider_death_hook, "spider_death", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_spider_gen_hook, "spider_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_spider_finish_hook, "spider_finish", NULL);
}
return (FALSE);
}
diff --git a/src/q_thief.cc b/src/q_thief.cc
index c3ffdf2b..cc4bd5a5 100644
--- a/src/q_thief.cc
+++ b/src/q_thief.cc
@@ -118,11 +118,10 @@ static bool_ quest_thieves_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_thieves_finish_hook(const char *fmt)
+static bool_ quest_thieves_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_THIEVES) return FALSE;
@@ -145,7 +144,7 @@ static bool_ quest_thieves_finish_hook(const char *fmt)
}
quest[*(quest[q_idx].plot)].init(*(quest[q_idx].plot));
- del_hook(HOOK_QUEST_FINISH, quest_thieves_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_thieves_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -169,9 +168,9 @@ bool_ quest_thieves_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
add_hook_new(HOOK_END_TURN, quest_thieves_hook, "thieves_end_turn", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_thieves_finish_hook, "thieves_finish");
- add_hook_new(HOOK_GEN_QUEST, quest_thieves_gen_hook, "thieves_geb", NULL);
- add_hook_new(HOOK_FEELING, quest_thieves_feeling_hook, "thieves_feel", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_thieves_finish_hook, "thieves_finish", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_thieves_gen_hook, "thieves_geb", NULL);
+ add_hook_new(HOOK_FEELING, quest_thieves_feeling_hook, "thieves_feel", NULL);
}
return (FALSE);
}
diff --git a/src/q_troll.cc b/src/q_troll.cc
index 474a1cd1..bb5f8729 100644
--- a/src/q_troll.cc
+++ b/src/q_troll.cc
@@ -96,11 +96,10 @@ static bool_ quest_troll_gen_hook(void *, void *, void *)
return TRUE;
}
-static bool_ quest_troll_finish_hook(const char *fmt)
+static bool_ quest_troll_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_TROLL) return FALSE;
@@ -111,7 +110,7 @@ static bool_ quest_troll_finish_hook(const char *fmt)
*(quest[q_idx].plot) = QUEST_NAZGUL;
quest[*(quest[q_idx].plot)].init(*(quest[q_idx].plot));
- del_hook(HOOK_QUEST_FINISH, quest_troll_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_troll_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -172,9 +171,9 @@ bool_ quest_troll_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MONSTER_DEATH, quest_troll_death_hook, "troll_death", NULL);
- add_hook_new(HOOK_GEN_QUEST, quest_troll_gen_hook, "troll_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_troll_finish_hook, "troll_finish");
+ add_hook_new(HOOK_MONSTER_DEATH, quest_troll_death_hook, "troll_death", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_troll_gen_hook, "troll_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_troll_finish_hook, "troll_finish", NULL);
}
return (FALSE);
}
diff --git a/src/q_wight.cc b/src/q_wight.cc
index 573061d7..dcbf6d7b 100644
--- a/src/q_wight.cc
+++ b/src/q_wight.cc
@@ -131,10 +131,10 @@ static bool_ quest_wight_death_hook(void *, void *in_, void *)
return (FALSE);
}
-static bool_ quest_wight_finish_hook(const char *fmt)
+static bool_ quest_wight_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_WIGHT) return FALSE;
@@ -145,7 +145,7 @@ static bool_ quest_wight_finish_hook(const char *fmt)
*(quest[q_idx].plot) = QUEST_NAZGUL;
quest[*(quest[q_idx].plot)].init(*(quest[q_idx].plot));
- del_hook(HOOK_QUEST_FINISH, quest_wight_finish_hook);
+ del_hook_new(HOOK_QUEST_FINISH, quest_wight_finish_hook);
process_hooks_restart = TRUE;
return TRUE;
@@ -155,9 +155,9 @@ bool_ quest_wight_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_MONSTER_DEATH, quest_wight_death_hook, "wight_death", NULL);
- add_hook_new(HOOK_GEN_QUEST, quest_wight_gen_hook, "wight_gen", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_wight_finish_hook, "wight_finish");
+ add_hook_new(HOOK_MONSTER_DEATH, quest_wight_death_hook, "wight_death", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_wight_gen_hook, "wight_gen", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_wight_finish_hook, "wight_finish", NULL);
}
return (FALSE);
}
diff --git a/src/q_wolves.cc b/src/q_wolves.cc
index ef3c22ec..1afa0fb8 100644
--- a/src/q_wolves.cc
+++ b/src/q_wolves.cc
@@ -104,11 +104,10 @@ static bool_ quest_wolves_death_hook(void *, void *, void *)
return FALSE;
}
-static bool_ quest_wolves_finish_hook(const char *fmt)
+static bool_ quest_wolves_finish_hook(void *, void *in_, void *)
{
- s32b q_idx;
-
- q_idx = get_next_arg(fmt);
+ struct hook_quest_finish_in *in = static_cast<struct hook_quest_finish_in *>(in_);
+ s32b q_idx = in->q_idx;
if (q_idx != QUEST_WOLVES) return FALSE;
@@ -126,8 +125,8 @@ bool_ quest_wolves_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
add_hook_new(HOOK_MONSTER_DEATH, quest_wolves_death_hook, "wolves_monster_death", NULL);
- add_hook (HOOK_QUEST_FINISH, quest_wolves_finish_hook, "wolves_finish");
- add_hook_new(HOOK_GEN_QUEST, quest_wolves_gen_hook, "wolves_geb", NULL);
+ add_hook_new(HOOK_QUEST_FINISH, quest_wolves_finish_hook, "wolves_finish", NULL);
+ add_hook_new(HOOK_GEN_QUEST, quest_wolves_gen_hook, "wolves_geb", NULL);
}
return (FALSE);
}
diff --git a/src/types.h b/src/types.h
index 0f963f5e..7ab40816 100644
--- a/src/types.h
+++ b/src/types.h
@@ -2300,6 +2300,11 @@ struct hook_quest_fail_in {
s16b q_idx;
};
+typedef struct hook_quest_finish_in hook_quest_finish_in;
+struct hook_quest_finish_in {
+ s32b q_idx;
+};
+
typedef enum { STAIRS_UP, STAIRS_DOWN } stairs_direction;
typedef struct hook_stair_in hook_stair_in;