OSDN Git Service

[Refactor] #38997 random_quest_number() にplayer_type * 引数を追加 / Added floor_type ...
authorHourier <hourier@users.sourceforge.jp>
Sat, 11 Jan 2020 14:00:20 +0000 (23:00 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sat, 11 Jan 2020 14:00:20 +0000 (23:00 +0900)
src/cmd/cmd-dump.c
src/core.c
src/quest.c
src/quest.h
src/spells2.c
src/spells3.c

index 045f06d..9989db7 100644 (file)
@@ -2898,7 +2898,7 @@ void do_cmd_feeling(player_type *creature_ptr)
        if (creature_ptr->wild_mode) return;
 
        /* No useful feeling in quests */
-       if (creature_ptr->current_floor_ptr->inside_quest && !random_quest_number(creature_ptr->current_floor_ptr->dun_level))
+       if (creature_ptr->current_floor_ptr->inside_quest && !random_quest_number(creature_ptr, creature_ptr->current_floor_ptr->dun_level))
        {
                msg_print(_("典型的なクエストのダンジョンのようだ。", "Looks like a typical quest level."));
                return;
index bb0bbd6..281e06c 100644 (file)
@@ -5017,8 +5017,8 @@ static void dungeon(player_type *player_ptr, bool load_game)
        /* Print quest message if appropriate */
        if (!player_ptr->current_floor_ptr->inside_quest && (player_ptr->dungeon_idx == DUNGEON_ANGBAND))
        {
-               quest_discovery(random_quest_number(player_ptr->current_floor_ptr->dun_level));
-               player_ptr->current_floor_ptr->inside_quest = random_quest_number(player_ptr->current_floor_ptr->dun_level);
+               quest_discovery(random_quest_number(player_ptr, player_ptr->current_floor_ptr->dun_level));
+               player_ptr->current_floor_ptr->inside_quest = random_quest_number(player_ptr, player_ptr->current_floor_ptr->dun_level);
        }
        if ((player_ptr->current_floor_ptr->dun_level == d_info[player_ptr->dungeon_idx].maxdepth) && d_info[player_ptr->dungeon_idx].final_guardian)
        {
index 9bf40f5..68fecba 100644 (file)
@@ -394,6 +394,7 @@ void quest_discovery(QUEST_IDX q_idx)
 /*!
  * @brief 新しく入ったダンジョンの階層に固定されている一般のクエストを探し出しIDを返す。
  * / Hack -- Check if a level is a "quest" level
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param level 検索対象になる階
  * @return クエストIDを返す。該当がない場合0を返す。
  */
@@ -417,19 +418,20 @@ QUEST_IDX quest_number(player_type *player_ptr, DEPTH level)
        }
 
        /* Check for random quest */
-       return (random_quest_number(level));
+       return random_quest_number(player_ptr, level);
 }
 
 /*!
  * @brief 新しく入ったダンジョンの階層に固定されているランダムクエストを探し出しIDを返す。
+ * @param player_ptr プレーヤーへの参照ポインタ
  * @param level 検索対象になる階
  * @return クエストIDを返す。該当がない場合0を返す。
  */
-QUEST_IDX random_quest_number(DEPTH level)
+QUEST_IDX random_quest_number(player_type *player_ptr, DEPTH level)
 {
        QUEST_IDX i;
 
-       if (p_ptr->dungeon_idx != DUNGEON_ANGBAND) return 0;
+       if (player_ptr->dungeon_idx != DUNGEON_ANGBAND) return 0;
 
        for (i = MIN_RANDOM_QUEST; i < MAX_RANDOM_QUEST + 1; i++)
        {
index 602ea3b..7d4c8fd 100644 (file)
@@ -91,8 +91,7 @@ extern void check_quest_completion(player_type *player_ptr, monster_type *m_ptr)
 extern void check_find_art_quest_completion(player_type *player_ptr, object_type *o_ptr);
 extern void quest_discovery(QUEST_IDX q_idx);
 extern QUEST_IDX quest_number(player_type *player_ptr, DEPTH level);
-extern QUEST_IDX random_quest_number(DEPTH level);
+extern QUEST_IDX random_quest_number(player_type *player_ptr, DEPTH level);
 extern void leave_quest_check(player_type *player_ptr);
 extern void leave_tower_check(void);
 extern void do_cmd_quest(player_type *player_ptr);
-
index 6448ec4..64d74b6 100644 (file)
@@ -1072,7 +1072,7 @@ bool genocide_aux(player_type *caster_ptr, MONSTER_IDX m_idx, int power, bool pl
        if (r_ptr->flags1 & (RF1_UNIQUE | RF1_QUESTOR)) resist = TRUE;
        else if (r_ptr->flags7 & RF7_UNIQUE2) resist = TRUE;
        else if (m_idx == caster_ptr->riding) resist = TRUE;
-       else if ((caster_ptr->current_floor_ptr->inside_quest && !random_quest_number(caster_ptr->current_floor_ptr->dun_level)) || caster_ptr->current_floor_ptr->inside_arena || caster_ptr->phase_out) resist = TRUE;
+       else if ((caster_ptr->current_floor_ptr->inside_quest && !random_quest_number(caster_ptr, caster_ptr->current_floor_ptr->dun_level)) || caster_ptr->current_floor_ptr->inside_arena || caster_ptr->phase_out) resist = TRUE;
        else if (player_cast && (r_ptr->level > randint0(power))) resist = TRUE;
        else if (player_cast && (m_ptr->mflag2 & MFLAG2_NOGENO)) resist = TRUE;
        else
@@ -1151,7 +1151,7 @@ bool genocide_aux(player_type *caster_ptr, MONSTER_IDX m_idx, int power, bool pl
 bool symbol_genocide(player_type *caster_ptr, int power, bool player_cast)
 {
        floor_type *floor_ptr = caster_ptr->current_floor_ptr;
-       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(floor_ptr->dun_level);
+       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(caster_ptr, floor_ptr->dun_level);
        is_special_floor |= caster_ptr->current_floor_ptr->inside_arena;
        is_special_floor |= caster_ptr->phase_out;
        if (is_special_floor)
@@ -1197,7 +1197,7 @@ bool symbol_genocide(player_type *caster_ptr, int power, bool player_cast)
 bool mass_genocide(player_type *caster_ptr, int power, bool player_cast)
 {
        floor_type *floor_ptr = caster_ptr->current_floor_ptr;
-       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(floor_ptr->dun_level);
+       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(caster_ptr, floor_ptr->dun_level);
        is_special_floor |= caster_ptr->current_floor_ptr->inside_arena;
        is_special_floor |= caster_ptr->phase_out;
        if (is_special_floor)
@@ -1238,7 +1238,7 @@ bool mass_genocide(player_type *caster_ptr, int power, bool player_cast)
 bool mass_genocide_undead(player_type *caster_ptr, int power, bool player_cast)
 {
        floor_type *floor_ptr = caster_ptr->current_floor_ptr;
-       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(floor_ptr->dun_level);
+       bool is_special_floor = floor_ptr->inside_quest && !random_quest_number(caster_ptr, floor_ptr->dun_level);
        is_special_floor |= caster_ptr->current_floor_ptr->inside_arena;
        is_special_floor |= caster_ptr->phase_out;
        if (is_special_floor)
index 64fb303..f2c15b7 100644 (file)
@@ -3512,7 +3512,7 @@ bool is_teleport_level_ineffective(player_type *caster_ptr, MONSTER_IDX idx)
 {
        floor_type *floor_ptr = caster_ptr->current_floor_ptr;
        bool is_special_floor = floor_ptr->inside_arena || caster_ptr->phase_out ||
-               (floor_ptr->inside_quest && !random_quest_number(floor_ptr->dun_level));
+               (floor_ptr->inside_quest && !random_quest_number(caster_ptr, floor_ptr->dun_level));
        bool is_invalid_floor = idx <= 0;
        is_invalid_floor &= quest_number(caster_ptr, floor_ptr->dun_level) || (floor_ptr->dun_level >= d_info[caster_ptr->dungeon_idx].maxdepth);
        is_invalid_floor &= caster_ptr->current_floor_ptr->dun_level >= 1;