diff options
-rw-r--r-- | src/bldg.cc | 3 | ||||
-rw-r--r-- | src/q_betwen.cc | 17 | ||||
-rw-r--r-- | src/q_dragons.cc | 11 | ||||
-rw-r--r-- | src/q_eol.cc | 19 | ||||
-rw-r--r-- | src/q_evil.cc | 11 | ||||
-rw-r--r-- | src/q_haunted.cc | 11 | ||||
-rw-r--r-- | src/q_nazgul.cc | 15 | ||||
-rw-r--r-- | src/q_nirna.cc | 17 | ||||
-rw-r--r-- | src/q_poison.cc | 15 | ||||
-rw-r--r-- | src/q_spider.cc | 15 | ||||
-rw-r--r-- | src/q_thief.cc | 15 | ||||
-rw-r--r-- | src/q_troll.cc | 15 | ||||
-rw-r--r-- | src/q_wight.cc | 14 | ||||
-rw-r--r-- | src/q_wolves.cc | 11 | ||||
-rw-r--r-- | src/types.h | 5 |
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; |