summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2014-12-18 21:31:32 +0100
committerBardur Arantsson <bardur@scientician.net>2014-12-23 12:07:54 +0100
commitddebc7f4803cc967427db1fdb7c2196afc114c14 (patch)
treeb16d5ffeff7b83f25d5f6944d0c10fd41af736fe
parent9a10050acb1c6398eedfe9c20611ac31f17802d5 (diff)
Update HOOK_CHAT to new-style hook
-rw-r--r--src/cmd2.cc3
-rw-r--r--src/q_hobbit.cc11
-rw-r--r--src/q_shroom.cc21
-rw-r--r--src/types.h5
4 files changed, 22 insertions, 18 deletions
diff --git a/src/cmd2.cc b/src/cmd2.cc
index e0a1bb08..2c42514d 100644
--- a/src/cmd2.cc
+++ b/src/cmd2.cc
@@ -5154,7 +5154,8 @@ void do_cmd_chat()
}
/* Process hook if there are any */
- if (!process_hooks(HOOK_CHAT, "(d)", c_ptr->m_idx))
+ struct hook_chat_in in = { c_ptr->m_idx };
+ if (!process_hooks_new(HOOK_CHAT, &in, NULL))
{
msg_print("The monster does not want to chat.");
}
diff --git a/src/q_hobbit.cc b/src/q_hobbit.cc
index 34b78808..2d9f5727 100644
--- a/src/q_hobbit.cc
+++ b/src/q_hobbit.cc
@@ -109,12 +109,11 @@ static bool_ quest_hobbit_speak_hook(void *, void *in_, void *)
return (TRUE);
}
-static bool_ quest_hobbit_chat_hook(const char *fmt)
+static bool_ quest_hobbit_chat_hook(void *, void *in_, void *)
{
+ struct hook_chat_in *in = static_cast<struct hook_chat_in *>(in_);
+ s32b m_idx = in->m_idx;
monster_type *m_ptr;
- s32b m_idx;
-
- m_idx = get_next_arg(fmt);
m_ptr = &m_list[m_idx];
@@ -189,14 +188,14 @@ bool_ quest_hobbit_init_hook(int q_idx)
add_hook_new(HOOK_GIVE, quest_hobbit_give_hook, "hobbit_give", NULL);
add_hook (HOOK_GEN_LEVEL, quest_hobbit_gen_hook, "hobbit_gen");
add_hook (HOOK_WILD_GEN, quest_hobbit_town_gen_hook, "hobbit_town_gen");
- add_hook (HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat");
+ 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 (HOOK_CHAT, quest_hobbit_chat_hook, "hobbit_chat");
+ 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_shroom.cc b/src/q_shroom.cc
index ed439fd3..3d476324 100644
--- a/src/q_shroom.cc
+++ b/src/q_shroom.cc
@@ -4,7 +4,8 @@
#define cquest (quest[QUEST_SHROOM])
-static bool_ quest_shroom_speak_hook(void *, void *in_, void *);
+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)
{
@@ -201,7 +202,8 @@ static void check_dogs_alive(s32b m_idx)
delete_monster_idx(m_idx);
del_hook_new(HOOK_GIVE, quest_shroom_give_hook);
- del_hook_new(HOOK_CHAT, quest_shroom_speak_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);
process_hooks_restart = TRUE;
}
@@ -230,14 +232,11 @@ static bool_ quest_shroom_speak_hook(void *, void *in_, void *)
return (TRUE);
}
-static bool_ quest_shroom_chat_hook(const char *fmt)
+static bool_ quest_shroom_chat_hook(void *, void *in_, void *)
{
- monster_type *m_ptr;
- s32b m_idx;
-
- m_idx = get_next_arg(fmt);
-
- m_ptr = &m_list[m_idx];
+ struct hook_chat_in *in = static_cast<struct hook_chat_in *>(in_);
+ s32b m_idx = in->m_idx;
+ monster_type *m_ptr = &m_list[m_idx];
if (m_ptr->r_idx != test_monster_name("Farmer Maggot")) return (FALSE);
@@ -278,14 +277,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 (HOOK_CHAT, quest_shroom_chat_hook, "shroom_chat");
+ 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 (HOOK_CHAT, quest_shroom_chat_hook, "shroom_chat");
+ 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 6ac84fc2..71db3da1 100644
--- a/src/types.h
+++ b/src/types.h
@@ -2222,6 +2222,11 @@ struct hook_mon_speak_in {
cptr m_name;
};
+typedef struct hook_chat_in hook_chat_in;
+struct hook_chat_in {
+ s32b m_idx;
+};
+
typedef struct hook_eat_in hook_eat_in;
struct hook_eat_in {
object_type *o_ptr;