if (!(r_ptr->flags1 & RF1_UNIQUE))
continue;
+ if (r_ptr->flags8 & RF8_NO_QUEST)
+ continue;
if (r_ptr->flags1 & RF1_QUESTOR)
continue;
if (r_ptr->rarity > 100)
if (random & RANDOM_MONSTER) {
floor_ptr->monster_level = floor_ptr->base_level + monster_index;
- place_monster(player_ptr, *qtwg_ptr->y, *qtwg_ptr->x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP));
+ place_monster(player_ptr, *qtwg_ptr->y, *qtwg_ptr->x, (PM_ALLOW_SLEEP | PM_ALLOW_GROUP | PM_NO_QUEST));
floor_ptr->monster_level = floor_ptr->base_level;
} else if (monster_index) {
const std::unordered_map<std::string_view, race_flags8> r_info_flags8 = {
{ "WILD_ONLY", RF8_WILD_ONLY },
{ "WILD_TOWN", RF8_WILD_TOWN },
- { "WILD_SHORE", RF8_WILD_SHORE },
+ { "NO_QUEST", RF8_NO_QUEST },
+ { "WILD_SHORE", RF8_WILD_SHORE },
{ "WILD_OCEAN", RF8_WILD_OCEAN },
{ "WILD_WASTE", RF8_WILD_WASTE },
{ "WILD_WOOD", RF8_WILD_WOOD },
#include "monster-race/monster-race.h"
#include "monster-race/race-flags1.h"
#include "monster-race/race-flags7.h"
+#include "monster-race/race-flags8.h"
#include "monster-race/race-indice-types.h"
#include "monster/monster-flag-types.h"
#include "monster/monster-info.h"
bool place_monster(player_type *player_ptr, POSITION y, POSITION x, BIT_FLAGS mode)
{
get_mon_num_prep(player_ptr, get_monster_hook(player_ptr), get_monster_hook2(player_ptr, y, x));
- MONRACE_IDX r_idx = get_mon_num(player_ptr, 0, player_ptr->current_floor_ptr->monster_level, 0);
+ MONRACE_IDX r_idx;
+ do {
+ r_idx = get_mon_num(player_ptr, 0, player_ptr->current_floor_ptr->monster_level, 0);
+ } while ((mode & PM_NO_QUEST) && (r_info[r_idx].flags8 & RF8_NO_QUEST));
+
if (r_idx == 0)
return false;
PM_KAGE = 0x00000200, /*!< モンスター生成フラグ: 必ずあやしい影として生成する */
PM_MULTIPLY = 0x00000400, /*!< モンスター生成フラグ: 増殖処理時として生成する */
PM_JURAL = 0x00000800, /*!< モンスター生成フラグ: ジュラル星人として誤認生成する */
+ PM_NO_QUEST = 0x00001000, /*!< モンスター生成フラグ: クエスト除外モンスターを生成しない */
};
enum race_flags8 : uint32_t {
RF8_WILD_ONLY = 0x00000001,
RF8_WILD_TOWN = 0x00000002,
- RF8_XXX8X02 = 0x00000004,
+ RF8_NO_QUEST = 0x00000004,
RF8_WILD_SHORE = 0x00000008,
RF8_WILD_OCEAN = 0x00000010,
RF8_WILD_WASTE = 0x00000020,