summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2014-12-18 23:38:42 +0100
committerBardur Arantsson <bardur@scientician.net>2014-12-23 12:07:54 +0100
commit471e7819c6af3b3513770d0784aed22cb5597da7 (patch)
treee7039d937dda25d49af0fa5f4fad69abb737c80e /src
parentc6673027ae73ff19195d5d69020eb6390ec6fd84 (diff)
Update HOOK_STAIR to new-style hook
Diffstat (limited to 'src')
-rw-r--r--src/cmd2.cc21
-rw-r--r--src/q_eol.cc21
-rw-r--r--src/q_fireprof.cc8
-rw-r--r--src/q_god.cc4
-rw-r--r--src/q_invas.cc18
-rw-r--r--src/q_library.cc8
-rw-r--r--src/q_nirna.cc13
-rw-r--r--src/q_ultrag.cc19
8 files changed, 48 insertions, 64 deletions
diff --git a/src/cmd2.cc b/src/cmd2.cc
index 2c42514d..6e1b2245 100644
--- a/src/cmd2.cc
+++ b/src/cmd2.cc
@@ -86,23 +86,10 @@ static bool_ do_cmd_bash_fountain(int y, int x)
*/
static bool_ stair_hooks(stairs_direction direction)
{
- cptr direction_s = (direction == STAIRS_UP) ? "up" : "down";
-
- /* Old-style hooks */
- if (process_hooks(HOOK_STAIR, "(s)", direction_s))
- {
- return TRUE; /* Prevent movement */
- }
-
- /* New-style hooks */
- {
- hook_stair_in in = { direction };
- hook_stair_out out = { TRUE }; /* Allow by default */
-
- process_hooks_new(HOOK_STAIR, &in, &out);
-
- return (!out.allow);
- }
+ hook_stair_in in = { direction };
+ hook_stair_out out = { TRUE }; /* Allow by default */
+ process_hooks_new(HOOK_STAIR, &in, &out);
+ return (!out.allow);
}
diff --git a/src/q_eol.cc b/src/q_eol.cc
index 4f0aa498..8495b280 100644
--- a/src/q_eol.cc
+++ b/src/q_eol.cc
@@ -157,12 +157,10 @@ static bool_ quest_eol_death_hook(const char *fmt)
return FALSE;
}
-static bool_ quest_eol_stair_hook(const char *fmt)
+static bool_ quest_eol_stair_hook(void *, void *in_, void *)
{
+ struct hook_stair_in *in = static_cast<struct hook_stair_in *>(in_);
monster_race *r_ptr = &r_info[test_monster_name("Eol, the Dark Elf")];
- cptr down;
-
- down = get_next_arg_str(fmt);
if (p_ptr->inside_quest != QUEST_EOL) return FALSE;
@@ -170,7 +168,7 @@ static bool_ quest_eol_stair_hook(const char *fmt)
if (r_ptr->max_num)
{
- if (!strcmp(down, "up"))
+ if (in->direction == STAIRS_UP)
{
/* Flush input */
flush();
@@ -179,7 +177,8 @@ static bool_ quest_eol_stair_hook(const char *fmt)
cmsg_print(TERM_YELLOW, "You flee away from Eol...");
cquest.status = QUEST_STATUS_FAILED;
- del_hook(HOOK_STAIR, quest_eol_stair_hook);
+
+ del_hook_new(HOOK_STAIR, quest_eol_stair_hook);
process_hooks_restart = TRUE;
return (FALSE);
}
@@ -192,11 +191,11 @@ bool_ quest_eol_init_hook(int q)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_MONSTER_DEATH, quest_eol_death_hook, "eol_death");
- add_hook(HOOK_GEN_QUEST, quest_eol_gen_hook, "eol_gen");
- add_hook(HOOK_STAIR, quest_eol_stair_hook, "eol_stair");
- add_hook(HOOK_QUEST_FAIL, quest_eol_fail_hook, "eol_fail");
- add_hook(HOOK_QUEST_FINISH, quest_eol_finish_hook, "eol_finish");
+ add_hook (HOOK_MONSTER_DEATH, quest_eol_death_hook, "eol_death");
+ add_hook (HOOK_GEN_QUEST, quest_eol_gen_hook, "eol_gen");
+ 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 (HOOK_QUEST_FINISH, quest_eol_finish_hook, "eol_finish");
}
return (FALSE);
}
diff --git a/src/q_fireprof.cc b/src/q_fireprof.cc
index bc1bae72..4b636e62 100644
--- a/src/q_fireprof.cc
+++ b/src/q_fireprof.cc
@@ -401,7 +401,7 @@ static bool_ fireproof_get_hook(const char *fmt)
return FALSE;
}
-static bool_ fireproof_stair_hook(const char *fmt)
+static bool_ fireproof_stair_hook(void *, void *, void *)
{
/* only ask this if player about to go up stairs of quest and
* hasn't retrieved item */
@@ -579,9 +579,9 @@ bool_ quest_fireproof_init_hook(int q)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) &&
(cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_GEN_QUEST, fireproof_gen_hook , "fireproof_gen_hook");
- add_hook(HOOK_GET , fireproof_get_hook , "fireproof_get_hook");
- add_hook(HOOK_STAIR , fireproof_stair_hook, "fireproof_stair_hook");
+ add_hook (HOOK_GEN_QUEST, fireproof_gen_hook , "fireproof_gen_hook");
+ add_hook (HOOK_GET , fireproof_get_hook , "fireproof_get_hook");
+ add_hook_new(HOOK_STAIR , fireproof_stair_hook, "fireproof_stair_hook", NULL);
}
return FALSE;
diff --git a/src/q_god.cc b/src/q_god.cc
index 47bfb0dc..028e8fdb 100644
--- a/src/q_god.cc
+++ b/src/q_god.cc
@@ -1152,7 +1152,7 @@ static bool_ quest_god_gen_level_begin_hook(const char *fmt)
return FALSE;
}
-static bool_ quest_god_stair_hook(const char *fmt)
+static bool_ quest_god_stair_hook(void *, void *, void *)
{
quest_god_dungeon_setup(dungeon_type);
return FALSE;
@@ -1180,7 +1180,7 @@ bool_ quest_god_init_hook(int q)
add_hook (HOOK_LEVEL_END_GEN, quest_god_level_end_gen_hook, "q_god_level_end_gen");
add_hook (HOOK_ENTER_DUNGEON, quest_god_enter_dungeon_hook, "q_god_enter_dungeon");
add_hook (HOOK_GEN_LEVEL_BEGIN, quest_god_gen_level_begin_hook, "q_god_gen_level_begin");
- add_hook (HOOK_STAIR, quest_god_stair_hook, "q_god_hook_stair");
+ add_hook_new(HOOK_STAIR, quest_god_stair_hook, "q_god_hook_stair", NULL);
add_hook_new(HOOK_GET, quest_god_get_hook, "q_god_get", NULL);
add_hook_new(HOOK_CHAR_DUMP, quest_god_char_dump_hook, "q_god_char_dump", NULL);
add_hook (HOOK_PLAYER_LEVEL, quest_god_player_level_hook, "q_god_player_level");
diff --git a/src/q_invas.cc b/src/q_invas.cc
index 489ecbad..42a83f8b 100644
--- a/src/q_invas.cc
+++ b/src/q_invas.cc
@@ -148,17 +148,15 @@ static bool_ quest_invasion_death_hook(const char *fmt)
return FALSE;
}
-static bool_ quest_invasion_stair_hook(const char *fmt)
+static bool_ quest_invasion_stair_hook(void *, void *in_, void *)
{
- cptr down;
-
- down = get_next_arg_str(fmt);
+ struct hook_stair_in *in = static_cast<struct hook_stair_in *>(in_);
if (p_ptr->inside_quest != QUEST_INVASION) return FALSE;
if (cave[p_ptr->py][p_ptr->px].feat != FEAT_LESS) return TRUE;
- if (!strcmp(down, "up"))
+ if (in->direction == STAIRS_UP)
{
if (cquest.status == QUEST_STATUS_FAILED)
{
@@ -184,7 +182,7 @@ static bool_ quest_invasion_stair_hook(const char *fmt)
cquest.status = QUEST_STATUS_FAILED;
town_info[2].destroyed = TRUE;
}
- del_hook(HOOK_STAIR, quest_invasion_stair_hook);
+ del_hook_new(HOOK_STAIR, quest_invasion_stair_hook);
process_hooks_restart = TRUE;
return (FALSE);
}
@@ -198,10 +196,10 @@ bool_ quest_invasion_init_hook(int q_idx)
add_hook_new(HOOK_CHAR_DUMP, quest_invasion_dump_hook, "invasion_dump", NULL);
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_MONSTER_AI, quest_invasion_ai_hook, "invasion_ai");
- add_hook(HOOK_GEN_QUEST, quest_invasion_gen_hook, "invasion_gen");
- add_hook(HOOK_MONSTER_DEATH, quest_invasion_death_hook, "invasion_death");
- add_hook(HOOK_STAIR, quest_invasion_stair_hook, "invasion_stair");
+ add_hook (HOOK_MONSTER_AI, quest_invasion_ai_hook, "invasion_ai");
+ add_hook (HOOK_GEN_QUEST, quest_invasion_gen_hook, "invasion_gen");
+ add_hook (HOOK_MONSTER_DEATH, quest_invasion_death_hook, "invasion_death");
+ add_hook_new(HOOK_STAIR, quest_invasion_stair_hook, "invasion_stair", NULL);
}
return (FALSE);
}
diff --git a/src/q_library.cc b/src/q_library.cc
index b0968f01..afa4284d 100644
--- a/src/q_library.cc
+++ b/src/q_library.cc
@@ -341,7 +341,7 @@ static bool_ quest_library_gen_hook(const char *fmt)
return TRUE;
}
-static bool_ quest_library_stair_hook(const char *fmt)
+static bool_ quest_library_stair_hook(void *, void *, void *)
{
bool_ ret;
@@ -494,9 +494,9 @@ bool_ quest_library_init_hook(int q)
if ((cquest.status >= QUEST_STATUS_UNTAKEN) &&
(cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_GEN_QUEST , quest_library_gen_hook , "library_gen_hook");
- add_hook(HOOK_STAIR , quest_library_stair_hook , "library_stair_hook");
- add_hook(HOOK_MONSTER_DEATH, quest_library_monster_death_hook, "library_monster_death_hook");
+ add_hook (HOOK_GEN_QUEST , quest_library_gen_hook , "library_gen_hook");
+ add_hook_new(HOOK_STAIR , quest_library_stair_hook , "library_stair_hook", NULL);
+ add_hook (HOOK_MONSTER_DEATH, quest_library_monster_death_hook, "library_monster_death_hook");
}
/* If quest was rewarded we need to initialize the real player's spellbook. */
diff --git a/src/q_nirna.cc b/src/q_nirna.cc
index d19491db..a0774cb5 100644
--- a/src/q_nirna.cc
+++ b/src/q_nirna.cc
@@ -89,7 +89,7 @@ static bool_ quest_nirnaeth_death_hook(const char *fmt)
return FALSE;
}
-static bool_ quest_nirnaeth_stair_hook(const char *fmt)
+static bool_ quest_nirnaeth_stair_hook(void *, void *, void *)
{
if (p_ptr->inside_quest != QUEST_NIRNAETH) return FALSE;
@@ -97,7 +97,8 @@ static bool_ quest_nirnaeth_stair_hook(const char *fmt)
cmsg_print(TERM_YELLOW, "You found a way out!");
cquest.status = QUEST_STATUS_COMPLETED;
- del_hook(HOOK_STAIR, quest_nirnaeth_stair_hook);
+
+ del_hook_new(HOOK_STAIR, quest_nirnaeth_stair_hook);
process_hooks_restart = TRUE;
return (FALSE);
}
@@ -106,10 +107,10 @@ bool_ quest_nirnaeth_init_hook(int q_idx)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_MONSTER_DEATH, quest_nirnaeth_death_hook, "nirnaeth_death");
- add_hook(HOOK_GEN_QUEST, quest_nirnaeth_gen_hook, "nirnaeth_gen");
- add_hook(HOOK_STAIR, quest_nirnaeth_stair_hook, "nirnaeth_stair");
- add_hook(HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook, "nirnaeth_finish");
+ add_hook (HOOK_MONSTER_DEATH, quest_nirnaeth_death_hook, "nirnaeth_death");
+ add_hook (HOOK_GEN_QUEST, quest_nirnaeth_gen_hook, "nirnaeth_gen");
+ add_hook_new(HOOK_STAIR, quest_nirnaeth_stair_hook, "nirnaeth_stair", NULL);
+ add_hook (HOOK_QUEST_FINISH, quest_nirnaeth_finish_hook, "nirnaeth_finish");
}
return (FALSE);
}
diff --git a/src/q_ultrag.cc b/src/q_ultrag.cc
index 7e9fdbd4..5aaa9b91 100644
--- a/src/q_ultrag.cc
+++ b/src/q_ultrag.cc
@@ -73,30 +73,29 @@ static bool_ quest_ultra_good_move_hook(void *, void *in_, void *)
return FALSE;
}
-static bool_ quest_ultra_good_stair_hook(const char *fmt)
+static bool_ quest_ultra_good_stair_hook(void *, void *in_, void *)
{
- cptr dir;
-
- dir = get_next_arg_str(fmt);
+ struct hook_stair_in *in = static_cast<struct hook_stair_in *>(in_);
+ stairs_direction dir = in->direction;
if (dungeon_type != DUNGEON_VOID)
return FALSE;
/* Cant leave */
- if ((!strcmp(dir, "up")) && (dun_level == 128))
+ if ((dir == STAIRS_UP) && (dun_level == 128))
{
cmsg_print(TERM_YELLOW, "The portal to Arda is now closed.");
return TRUE;
}
/* there is no coming back */
- if ((!strcmp(dir, "up")) && (dun_level == 150))
+ if ((dir == STAIRS_UP) && (dun_level == 150))
{
cmsg_print(TERM_YELLOW, "The barrier seems to be impenetrable from this side.");
cmsg_print(TERM_YELLOW, "You will have to move on.");
return TRUE;
}
/* Cant enter without the flame imperishable */
- if ((!strcmp(dir, "down")) && (dun_level == 149))
+ if ((dir == STAIRS_DOWN) && (dun_level == 149))
{
int i;
bool_ ultimate = FALSE;
@@ -263,9 +262,9 @@ bool_ quest_ultra_good_init_hook(int q)
{
if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED))
{
- add_hook(HOOK_STAIR, quest_ultra_good_stair_hook, "ultrag_stair");
- add_hook(HOOK_RECALL, quest_ultra_good_recall_hook, "ultrag_recall");
- add_hook(HOOK_MONSTER_DEATH, quest_ultra_good_death_hook, "ultrag_death");
+ add_hook_new(HOOK_STAIR, quest_ultra_good_stair_hook, "ultrag_stair", NULL);
+ add_hook (HOOK_RECALL, quest_ultra_good_recall_hook, "ultrag_recall");
+ add_hook (HOOK_MONSTER_DEATH, quest_ultra_good_death_hook, "ultrag_death");
}
if (cquest.status == QUEST_STATUS_UNTAKEN)
{