diff options
Diffstat (limited to 'src/monster_ego.hpp')
-rw-r--r-- | src/monster_ego.hpp | 106 |
1 files changed, 47 insertions, 59 deletions
diff --git a/src/monster_ego.hpp b/src/monster_ego.hpp index 00464c2e..b578d03e 100644 --- a/src/monster_ego.hpp +++ b/src/monster_ego.hpp @@ -2,80 +2,68 @@ #include "h-basic.h" #include "monster_blow.hpp" +#include "monster_race_flag_set.hpp" +#include "monster_spell_flag_set.hpp" + +#include <array> /** * Monster ego descriptors. */ struct monster_ego { - const char *name; /* Name */ - bool_ before; /* Display ego before or after */ + const char *name = nullptr; /* Name */ + bool_ before = false; /* Display ego before or after */ - monster_blow blow[4]; /* Up to four blows per round */ - byte blowm[4][2]; + std::array<monster_blow, 4> blow { }; /* Up to four blows per round */ + byte blowm[4][2] = { + { 0, 0 }, + { 0, 0 }, + { 0, 0 }, + { 0, 0 } + }; - s16b hdice; /* Creatures hit dice count */ - s16b hside; /* Creatures hit dice sides */ + s16b hdice = 0; /* Creatures hit dice count */ + s16b hside = 0; /* Creatures hit dice sides */ - s16b ac; /* Armour Class */ + s16b ac = 0; /* Armour Class */ - s16b sleep; /* Inactive counter (base) */ - s16b aaf; /* Area affect radius (1-100) */ - s16b speed; /* Speed (normally 110) */ + s16b sleep = 0; /* Inactive counter (base) */ + s16b aaf = 0; /* Area affect radius (1-100) */ + s16b speed = 0; /* Speed (normally 110) */ - s32b mexp; /* Exp value for kill */ + s32b mexp = 0; /* Exp value for kill */ - s32b weight; /* Weight of the monster */ + s32b weight = 0; /* Weight of the monster */ - byte freq_inate; /* Inate spell frequency */ - byte freq_spell; /* Other spell frequency */ + byte freq_inate = 0; /* Inate spell frequency */ + byte freq_spell = 0; /* Other spell frequency */ /* Ego flags */ - u32b flags1; /* Flags 1 */ - u32b flags2; /* Flags 1 */ - u32b flags3; /* Flags 1 */ - u32b flags7; /* Flags 1 */ - u32b flags8; /* Flags 1 */ - u32b flags9; /* Flags 1 */ - u32b hflags1; /* Flags 1 */ - u32b hflags2; /* Flags 1 */ - u32b hflags3; /* Flags 1 */ - u32b hflags7; /* Flags 1 */ - u32b hflags8; /* Flags 1 */ - u32b hflags9; /* Flags 1 */ + monster_race_flag_set flags; + monster_race_flag_set hflags; /* Monster flags */ - u32b mflags1; /* Flags 1 (general) */ - u32b mflags2; /* Flags 2 (abilities) */ - u32b mflags3; /* Flags 3 (race/resist) */ - u32b mflags4; /* Flags 4 (inate/breath) */ - u32b mflags5; /* Flags 5 (normal spells) */ - u32b mflags6; /* Flags 6 (special spells) */ - u32b mflags7; /* Flags 7 (movement related abilities) */ - u32b mflags8; /* Flags 8 (wilderness info) */ - u32b mflags9; /* Flags 9 (drops info) */ - - /* Negative Flags, to be removed from the monster flags */ - u32b nflags1; /* Flags 1 (general) */ - u32b nflags2; /* Flags 2 (abilities) */ - u32b nflags3; /* Flags 3 (race/resist) */ - u32b nflags4; /* Flags 4 (inate/breath) */ - u32b nflags5; /* Flags 5 (normal spells) */ - u32b nflags6; /* Flags 6 (special spells) */ - u32b nflags7; /* Flags 7 (movement related abilities) */ - u32b nflags8; /* Flags 8 (wilderness info) */ - u32b nflags9; /* Flags 9 (drops info) */ - - s16b level; /* Level of creature */ - s16b rarity; /* Rarity of creature */ - - - byte d_attr; /* Default monster attribute */ - char d_char; /* Default monster character */ - - byte g_attr; /* Overlay graphic attribute */ - char g_char; /* Overlay graphic character */ - - char r_char[5]; /* Monster race allowed */ - char nr_char[5]; /* Monster race not allowed */ + monster_race_flag_set mflags; + + /* Monster spells */ + monster_spell_flag_set mspells; + + /* Negative flags, to be removed from the monster flags */ + monster_race_flag_set nflags; + + /* Negative spells; to be removed from the monster spells */ + monster_spell_flag_set nspells; + + s16b level = 0; /* Level of creature */ + s16b rarity = 0; /* Rarity of creature */ + + byte d_attr = 0; /* Default monster attribute */ + char d_char = '\0'; /* Default monster character */ + + byte g_attr = 0; /* Overlay graphic attribute */ + char g_char = '\0'; /* Overlay graphic character */ + + char r_char[5] = { '\0' }; /* Monster race allowed */ + char nr_char[5] = { '\0' }; /* Monster race not allowed */ }; |