diff options
author | Manoj Srivastava <srivasta@debian.org> | 2020-05-23 00:33:19 -0700 |
---|---|---|
committer | Manoj Srivastava <srivasta@debian.org> | 2020-05-23 00:33:19 -0700 |
commit | d6b913d3ca2e84b75f3675fd6e9f5246c100cf27 (patch) | |
tree | 5fc28b7efc737bf2c79dc7d799e0a6013957fe11 /src/q_thrain.cc | |
parent | c42f029316c0c004a795ca170bdb50644a800534 (diff) | |
parent | 73a0259be1d44fdb2ab34266ae0ff63f0d8f0b60 (diff) |
Merge branch 'master' into dgit/siddebian/2.4.0-ah-1archive/debian/2.4.0-ah-1
Diffstat (limited to 'src/q_thrain.cc')
-rw-r--r-- | src/q_thrain.cc | 100 |
1 files changed, 64 insertions, 36 deletions
diff --git a/src/q_thrain.cc b/src/q_thrain.cc index 05def27a..7b895695 100644 --- a/src/q_thrain.cc +++ b/src/q_thrain.cc @@ -3,6 +3,7 @@ #include "cave.hpp" #include "cave_type.hpp" #include "dungeon_info_type.hpp" +#include "game.hpp" #include "generate.hpp" #include "hook_build_room1_in.hpp" #include "hook_move_in.hpp" @@ -11,7 +12,6 @@ #include "init1.hpp" #include "lua_bind.hpp" #include "object_type.hpp" -#include "quark.hpp" #include "randart.hpp" #include "messages.hpp" #include "monster2.hpp" @@ -30,33 +30,52 @@ GENERATE_MONSTER_LOOKUP_FN(get_thrain, "Thrain, the King Under the Mountain") GENERATE_MONSTER_LOOKUP_FN(get_dwar, "Dwar, Dog Lord of Waw") GENERATE_MONSTER_LOOKUP_FN(get_hoarmurath, "Hoarmurath of Dir") -static bool_ quest_thrain_death_hook(void *, void *in_, void *) +static bool quest_thrain_death_hook(void *, void *in_, void *) { struct hook_monster_death_in *in = static_cast<struct hook_monster_death_in *>(in_); s32b m_idx = in->m_idx; int r, x, y; monster_type *m_ptr; - if ((cquest.status >= QUEST_STATUS_FINISHED) || (dun_level !=cquest.data[0]) || (dungeon_type != DUNGEON_DOL_GULDUR)) return (FALSE); + if ((cquest.status >= QUEST_STATUS_FINISHED) || (dun_level !=cquest.data[0]) || (dungeon_type != DUNGEON_DOL_GULDUR)) + { + return false; + } + m_ptr = &m_list[m_idx]; - if ((m_ptr->r_idx != get_dwar()) && (m_ptr->r_idx != get_hoarmurath())) return (FALSE); + if ((m_ptr->r_idx != get_dwar()) && (m_ptr->r_idx != get_hoarmurath())) + { + return false; + } cquest.data[2]++; - if (cquest.data[2] < 2) return (FALSE); + if (cquest.data[2] < 2) + { + return false; + } cmsg_print(TERM_YELLOW, "The magic hiding the room dissipates."); for (x = 0; x < cur_wid; x++) + { for (y = 0; y < cur_hgt; y++) { cave_type *c_ptr = &cave[y][x]; - if (c_ptr->mimic != 61) continue; - if (!(c_ptr->info & CAVE_FREE)) continue; + if (c_ptr->mimic != 61) + { + continue; + } + + if (!(c_ptr->info & CAVE_FREE)) + { + continue; + } c_ptr->mimic = 0; lite_spot(y, x); } + } cquest.status = QUEST_STATUS_FINISHED; cmsg_print(TERM_YELLOW, "Thrain speaks:"); @@ -72,7 +91,10 @@ static bool_ quest_thrain_death_hook(void *, void *in_, void *) monster_type *m_ptr = &m_list[r]; /* Ignore "dead" monsters */ - if (!m_ptr->r_idx) continue; + if (!m_ptr->r_idx) + { + continue; + } /* Is it the princess? */ if (m_ptr->r_idx == get_thrain()) @@ -80,18 +102,20 @@ static bool_ quest_thrain_death_hook(void *, void *in_, void *) int x = m_ptr->fx; int y = m_ptr->fy; int i, j; - object_type forge, *q_ptr; delete_monster_idx(r); /* Wipe the glass walls and create a stair */ for (i = x - 1; i <= x + 1; i++) + { for (j = y - 1; j <= y + 1; j++) { if (in_bounds(j, i)) cave_set_feat(j, i, FEAT_FLOOR); } + } /* Get local object */ + object_type forge, *q_ptr; q_ptr = &forge; /* Wipe the object */ @@ -100,7 +124,7 @@ static bool_ quest_thrain_death_hook(void *, void *in_, void *) q_ptr->number = 1; q_ptr->found = OBJ_FOUND_REWARD; create_artifact(q_ptr, FALSE, TRUE); - q_ptr->art_name = quark_add("of Thrain"); + q_ptr->artifact_name = "of Thrain"; /* Drop it in the dungeon */ drop_near(q_ptr, -1, y, x); @@ -112,10 +136,10 @@ static bool_ quest_thrain_death_hook(void *, void *in_, void *) del_hook_new(HOOK_MONSTER_DEATH, quest_thrain_death_hook); process_hooks_restart = TRUE; - return (FALSE); + return false; } -static bool_ quest_thrain_gen_hook(void *, void *in_, void *) +static bool quest_thrain_gen_hook(void *, void *in_, void *) { struct hook_build_room1_in *in = static_cast<struct hook_build_room1_in *>(in_); s32b bx0 = in->x; @@ -126,16 +150,16 @@ static bool_ quest_thrain_gen_hook(void *, void *in_, void *) int y2, x2, yval, xval; int y1, x1, xsize, ysize; - if (dungeon_type != DUNGEON_DOL_GULDUR) return (FALSE); - if (cquest.data[0] != dun_level) return (FALSE); - if (cquest.data[1]) return (FALSE); - if ((cquest.status < QUEST_STATUS_TAKEN) || (cquest.status >= QUEST_STATUS_FINISHED)) return (FALSE); + if (dungeon_type != DUNGEON_DOL_GULDUR) return false; + if (cquest.data[0] != dun_level) return false; + if (cquest.data[1]) return false; + if ((cquest.status < QUEST_STATUS_TAKEN) || (cquest.status >= QUEST_STATUS_FINISHED)) return false; /* Pick a room size */ get_map_size("thrain.map", &ysize, &xsize); /* Try to allocate space for room. If fails, exit */ - if (!room_alloc(xsize + 2, ysize + 2, FALSE, by0, bx0, &xval, &yval)) return FALSE; + if (!room_alloc(xsize + 2, ysize + 2, FALSE, by0, bx0, &xval, &yval)) return false; /* Get corner values */ y1 = yval - ysize / 2; @@ -183,37 +207,38 @@ static bool_ quest_thrain_gen_hook(void *, void *in_, void *) /* Don't try another one for this generation */ cquest.data[1] = 1; - return (TRUE); + return true; } -static bool_ quest_thrain_feeling_hook(void *, void *, void *) +static bool quest_thrain_feeling_hook(void *, void *, void *) { - if (dungeon_type != DUNGEON_DOL_GULDUR) return (FALSE); - if (cquest.data[0] != dun_level) return (FALSE); - if (cquest.status != QUEST_STATUS_UNTAKEN) return (FALSE); + if (dungeon_type != DUNGEON_DOL_GULDUR) return false; + if (cquest.data[0] != dun_level) return false; + if (cquest.status != QUEST_STATUS_UNTAKEN) return false; cmsg_format(TERM_YELLOW, "You hear someone shouting under the torture."); cquest.status = QUEST_STATUS_TAKEN; - cquest.init(QUEST_THRAIN); + cquest.init(); - return (FALSE); + return false; } -static bool_ quest_thrain_move_hook(void *, void *in_, void *) +static bool quest_thrain_move_hook(void *, void *in_, void *) { struct hook_move_in *in = static_cast<struct hook_move_in *>(in_); s32b y = in->y; s32b x = in->x; cave_type *c_ptr = &cave[y][x]; - if (dungeon_type != DUNGEON_DOL_GULDUR) return (FALSE); - if (cquest.data[0] != dun_level) return (FALSE); - if ((cquest.status < QUEST_STATUS_TAKEN) || (cquest.status >= QUEST_STATUS_FINISHED)) return (FALSE); - if (!(c_ptr->info & CAVE_FREE)) return (FALSE); - if (c_ptr->mimic != 61) return (FALSE); + if (dungeon_type != DUNGEON_DOL_GULDUR) return false; + if (cquest.data[0] != dun_level) return false; + if ((cquest.status < QUEST_STATUS_TAKEN) || (cquest.status >= QUEST_STATUS_FINISHED)) return false; + if (!(c_ptr->info & CAVE_FREE)) return false; + if (c_ptr->mimic != 61) return false; cmsg_print(TERM_YELLOW, "The magic hiding the room dissipates."); for (x = 0; x < cur_wid; x++) + { for (y = 0; y < cur_hgt; y++) { c_ptr = &cave[y][x]; @@ -224,25 +249,29 @@ static bool_ quest_thrain_move_hook(void *, void *in_, void *) c_ptr->mimic = 0; lite_spot(y, x); } + } - return (FALSE); + return false; } -static bool_ quest_thrain_turn_hook(void *, void *, void *) +static bool quest_thrain_turn_hook(void *, void *, void *) { cquest.data[1] = 0; cquest.data[2] = 0; - return (FALSE); + return false; } -bool_ quest_thrain_init_hook(int q) +void quest_thrain_init_hook() { + auto const &d_info = game->edit_data.d_info; + auto &messages = game->messages; + if (!cquest.data[0]) { cquest.data[0] = rand_range(d_info[DUNGEON_DOL_GULDUR].mindepth + 1, d_info[DUNGEON_DOL_GULDUR].maxdepth - 1); if (wizard) { - message_add(format("Thrain lvl %d", cquest.data[0]), TERM_BLUE); + messages.add(format("Thrain lvl %d", cquest.data[0]), TERM_BLUE); } } if ((cquest.status >= QUEST_STATUS_TAKEN) && (cquest.status < QUEST_STATUS_FINISHED)) @@ -257,5 +286,4 @@ bool_ quest_thrain_init_hook(int q) add_hook_new(HOOK_FEELING, quest_thrain_feeling_hook, "thrain_feel", NULL); add_hook_new(HOOK_MONSTER_DEATH, quest_thrain_death_hook, "thrain_death", NULL); } - return (FALSE); } |