summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/q_hobbit.cc23
-rw-r--r--src/q_nazgul.cc13
-rw-r--r--src/q_poison.cc8
-rw-r--r--src/q_shroom.cc15
-rw-r--r--src/types.h5
-rw-r--r--src/wild.cc6
6 files changed, 37 insertions, 33 deletions
diff --git a/src/q_hobbit.cc b/src/q_hobbit.cc
index c479eb84..143e7599 100644
--- a/src/q_hobbit.cc
+++ b/src/q_hobbit.cc
@@ -4,12 +4,11 @@
#define cquest (quest[QUEST_HOBBIT])
-static bool_ quest_hobbit_town_gen_hook(const char *fmt)
+static bool_ quest_hobbit_town_gen_hook(void *, void *in_, void *)
{
+ struct hook_wild_gen_in *in = static_cast<struct hook_wild_gen_in *>(in_);
int x = 1, y = 1, tries = 10000;
- s32b small;
-
- small = get_next_arg(fmt);
+ bool_ small = in->small;
if ((turn < (cquest.data[1] + (DAY * 10L))) || (cquest.status > QUEST_STATUS_COMPLETED) || (small) || (p_ptr->town_num != 1)) return (FALSE);
@@ -185,17 +184,17 @@ bool_ quest_hobbit_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook_new(HOOK_GIVE, quest_hobbit_give_hook, "hobbit_give", NULL);
- add_hook_new(HOOK_GEN_LEVEL, quest_hobbit_gen_hook, "hobbit_gen", NULL);
- add_hook (HOOK_WILD_GEN, quest_hobbit_town_gen_hook, "hobbit_town_gen");
- add_hook_new(HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat", NULL);
- add_hook_new(HOOK_MON_SPEAK, quest_hobbit_speak_hook, "hobbit_speak", NULL);
+ add_hook_new(HOOK_GIVE, quest_hobbit_give_hook, "hobbit_give", NULL);
+ add_hook_new(HOOK_GEN_LEVEL, quest_hobbit_gen_hook, "hobbit_gen", NULL);
+ add_hook_new(HOOK_WILD_GEN, quest_hobbit_town_gen_hook, "hobbit_town_gen", NULL);
+ add_hook_new(HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat", NULL);
+ add_hook_new(HOOK_MON_SPEAK, quest_hobbit_speak_hook, "hobbit_speak", NULL);
}
if (cquest.status == QUEST_STATUS_UNTAKEN)
{
- add_hook_new(HOOK_MON_SPEAK, quest_hobbit_speak_hook, "hobbit_speak", NULL);
- add_hook (HOOK_WILD_GEN, quest_hobbit_town_gen_hook, "hobbit_town_gen");
- add_hook_new(HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat", NULL);
+ add_hook_new(HOOK_MON_SPEAK, quest_hobbit_speak_hook, "hobbit_speak", NULL);
+ add_hook_new(HOOK_WILD_GEN, quest_hobbit_town_gen_hook, "hobbit_town_gen", NULL);
+ add_hook_new(HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat", NULL);
}
add_hook(HOOK_CHAR_DUMP, quest_hobbit_dump_hook, "hobbit_dump");
return (FALSE);
diff --git a/src/q_nazgul.cc b/src/q_nazgul.cc
index 5573b40b..ebc7f3b6 100644
--- a/src/q_nazgul.cc
+++ b/src/q_nazgul.cc
@@ -3,12 +3,11 @@
#define cquest (quest[QUEST_NAZGUL])
-static bool_ quest_nazgul_gen_hook(const char *fmt)
+static bool_ quest_nazgul_gen_hook(void *, void *in_, void *)
{
+ struct hook_wild_gen_in *in = static_cast<struct hook_wild_gen_in *>(in_);
int m_idx, x = 1, y = 1, tries = 10000;
- s32b small;
-
- small = get_next_arg(fmt);
+ bool_ small = in->small;
if ((cquest.status != QUEST_STATUS_TAKEN) || (small) || (p_ptr->town_num != 1)) return (FALSE);
@@ -113,9 +112,9 @@ bool_ quest_nazgul_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_MONSTER_DEATH, quest_nazgul_death_hook, "nazgul_death");
- add_hook(HOOK_WILD_GEN, quest_nazgul_gen_hook, "nazgul_gen");
- add_hook(HOOK_QUEST_FINISH, quest_nazgul_finish_hook, "nazgul_finish");
+ add_hook (HOOK_MONSTER_DEATH, quest_nazgul_death_hook, "nazgul_death");
+ 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(HOOK_CHAR_DUMP, quest_nazgul_dump_hook, "nazgul_dump");
add_hook(HOOK_INIT_QUEST, quest_nazgul_forbid_hook, "nazgul_forbid");
diff --git a/src/q_poison.cc b/src/q_poison.cc
index a63dca96..d65b8802 100644
--- a/src/q_poison.cc
+++ b/src/q_poison.cc
@@ -25,7 +25,7 @@ static bool_ create_molds_hook(int r_idx)
else return FALSE;
}
-static bool_ quest_poison_gen_hook(const char *fmt)
+static bool_ quest_poison_gen_hook(void *, void *, void *)
{
int cy = 1, cx = 1, x, y, tries = 10000, r_idx;
bool_ (*old_get_mon_num_hook)(int r_idx);
@@ -234,9 +234,9 @@ bool_ quest_poison_init_hook(int q_idx)
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_DROP, quest_poison_drop_hook, "poison_drop");
- add_hook(HOOK_WILD_GEN, quest_poison_gen_hook, "poison_gen");
- add_hook(HOOK_QUEST_FINISH, quest_poison_finish_hook, "poison_finish");
+ add_hook (HOOK_DROP, quest_poison_drop_hook, "poison_drop");
+ add_hook_new(HOOK_WILD_GEN, quest_poison_gen_hook, "poison_gen", NULL);
+ add_hook (HOOK_QUEST_FINISH, quest_poison_finish_hook, "poison_finish");
}
if (cquest.status < QUEST_STATUS_COMPLETED)
{
diff --git a/src/q_shroom.cc b/src/q_shroom.cc
index 3d476324..f36b7d50 100644
--- a/src/q_shroom.cc
+++ b/src/q_shroom.cc
@@ -7,12 +7,11 @@
static bool_ quest_shroom_speak_hook(void *, void *, void *);
static bool_ quest_shroom_chat_hook(void *, void *, void *);
-static bool_ quest_shroom_town_gen_hook(const char *fmt)
+static bool_ quest_shroom_town_gen_hook(void *, void *in_, void *)
{
+ struct hook_wild_gen_in *in = static_cast<struct hook_wild_gen_in *>(in_);
int m_idx, x = 1, y = 1, tries = 10000;
- s32b small;
-
- small = get_next_arg(fmt);
+ bool_ small = in->small;
/* Generate the shrooms field */
if ((!small) && (p_ptr->wilderness_y == 21) && (p_ptr->wilderness_x == 33))
@@ -131,7 +130,7 @@ static bool_ quest_shroom_give_hook(void *, void *in_, void *)
del_hook_new(HOOK_GIVE, quest_shroom_give_hook);
del_hook_new(HOOK_CHAT, quest_shroom_speak_hook);
- del_hook (HOOK_WILD_GEN, quest_shroom_town_gen_hook);
+ del_hook_new(HOOK_WILD_GEN, quest_shroom_town_gen_hook);
process_hooks_restart = TRUE;
return TRUE;
}
@@ -204,7 +203,7 @@ static void check_dogs_alive(s32b m_idx)
del_hook_new(HOOK_GIVE, quest_shroom_give_hook);
del_hook_new(HOOK_MON_SPEAK, quest_shroom_speak_hook);
del_hook_new(HOOK_CHAT, quest_shroom_chat_hook);
- del_hook (HOOK_WILD_GEN, quest_shroom_town_gen_hook);
+ del_hook_new(HOOK_WILD_GEN, quest_shroom_town_gen_hook);
process_hooks_restart = TRUE;
}
else
@@ -276,14 +275,14 @@ bool_ quest_shroom_init_hook(int q_idx)
{
add_hook (HOOK_MONSTER_DEATH, quest_shroom_death_hook, "shroom_death");
add_hook_new(HOOK_GIVE, quest_shroom_give_hook, "shroom_give", NULL);
- add_hook (HOOK_WILD_GEN, quest_shroom_town_gen_hook, "shroom_town_gen");
+ add_hook_new(HOOK_WILD_GEN, quest_shroom_town_gen_hook, "shroom_town_gen", NULL);
add_hook_new(HOOK_CHAT, quest_shroom_chat_hook, "shroom_chat", NULL);
add_hook_new(HOOK_MON_SPEAK, quest_shroom_speak_hook, "shroom_speak", NULL);
}
if (cquest.status == QUEST_STATUS_UNTAKEN)
{
add_hook_new(HOOK_MON_SPEAK, quest_shroom_speak_hook, "shroom_speak", NULL);
- add_hook (HOOK_WILD_GEN, quest_shroom_town_gen_hook, "shroom_town_gen");
+ add_hook_new(HOOK_WILD_GEN, quest_shroom_town_gen_hook, "shroom_town_gen", NULL);
add_hook_new(HOOK_CHAT, quest_shroom_chat_hook, "shroom_chat", NULL);
}
return (FALSE);
diff --git a/src/types.h b/src/types.h
index 71db3da1..9efd9d13 100644
--- a/src/types.h
+++ b/src/types.h
@@ -2227,6 +2227,11 @@ struct hook_chat_in {
s32b m_idx;
};
+typedef struct hook_wild_gen_in hook_wild_gen_in;
+struct hook_wild_gen_in {
+ bool_ small;
+};
+
typedef struct hook_eat_in hook_eat_in;
struct hook_eat_in {
object_type *o_ptr;
diff --git a/src/wild.cc b/src/wild.cc
index 8719a53a..a44fa4d5 100644
--- a/src/wild.cc
+++ b/src/wild.cc
@@ -535,7 +535,8 @@ void wilderness_gen(int refresh)
}
}
- process_hooks(HOOK_WILD_GEN, "(d)", FALSE);
+ struct hook_wild_gen_in in = { FALSE };
+ process_hooks_new(HOOK_WILD_GEN, &in, NULL);
}
/*
@@ -603,7 +604,8 @@ void wilderness_gen_small()
}
}
- process_hooks(HOOK_WILD_GEN, "(d)", TRUE);
+ struct hook_wild_gen_in in = { TRUE };
+ process_hooks_new(HOOK_WILD_GEN, &in, NULL);
}
/* Show a small radius of wilderness around the player */