-#pragma once
+#pragma once
#include <string>
#include <vector>
#include "dungeon/dungeon-flag-types.h"
#include "monster-race/race-ability-flags.h"
#include "monster-race/race-behavior-flags.h"
+#include "monster-race/race-drop-flags.h"
+#include "monster-race/race-flags-resistance.h"
#include "monster-race/race-kind-flags.h"
+#include "monster-race/race-resistance-mask.h"
#include "monster-race/race-visual-flags.h"
+#include "monster-race/race-wilderness-flags.h"
#include "system/angband.h"
#include "util/flag-group.h"
#define DUNGEON_DARKNESS 19
#define DUNGEON_MAX 19
-typedef struct feat_prob {
+enum class MonsterRaceId : int16_t;
+
+struct feat_prob {
FEAT_IDX feat{}; /* Feature tile */
PERCENTAGE percent{}; /* Chance of type */
-} feat_prob;
+};
/* A structure for the != dungeon types */
struct dungeon_type {
BIT_FLAGS mflags7{};
BIT_FLAGS mflags8{};
BIT_FLAGS mflags9{};
- BIT_FLAGS mflagsr{};
EnumClassFlagGroup<MonsterAbilityType> mon_ability_flags;
EnumClassFlagGroup<MonsterBehaviorType> mon_behavior_flags;
EnumClassFlagGroup<MonsterVisualType> mon_visual_flags;
EnumClassFlagGroup<MonsterKindType> mon_kind_flags;
+ EnumClassFlagGroup<MonsterResistanceType> mon_resistance_flags;
+ EnumClassFlagGroup<MonsterDropType> mon_drop_flags;
+ EnumClassFlagGroup<MonsterWildernessType> mon_wilderness_flags;
char r_char[5]{}; /* Monster race allowed */
KIND_OBJECT_IDX final_object{}; /* The object you'll find at the bottom */
ARTIFACT_IDX final_artifact{}; /* The artifact you'll find at the bottom */
- MONRACE_IDX final_guardian{}; /* The artifact's guardian. If an artifact is specified, then it's NEEDED */
+ MonsterRaceId final_guardian{}; /* The artifact's guardian. If an artifact is specified, then it's NEEDED */
PROB special_div{}; /* % of monsters affected by the flags/races allowed, to add some variety */
int tunnel_percent{};