diff options
author | Bardur Arantsson <bardur@scientician.net> | 2014-12-18 23:38:42 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2014-12-23 12:07:54 +0100 |
commit | 471e7819c6af3b3513770d0784aed22cb5597da7 (patch) | |
tree | e7039d937dda25d49af0fa5f4fad69abb737c80e /src | |
parent | c6673027ae73ff19195d5d69020eb6390ec6fd84 (diff) |
Update HOOK_STAIR to new-style hook
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd2.cc | 21 | ||||
-rw-r--r-- | src/q_eol.cc | 21 | ||||
-rw-r--r-- | src/q_fireprof.cc | 8 | ||||
-rw-r--r-- | src/q_god.cc | 4 | ||||
-rw-r--r-- | src/q_invas.cc | 18 | ||||
-rw-r--r-- | src/q_library.cc | 8 | ||||
-rw-r--r-- | src/q_nirna.cc | 13 | ||||
-rw-r--r-- | src/q_ultrag.cc | 19 |
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) { |