#ifndef GAME_MWMECHANICS_NPCSTATS_H #define GAME_MWMECHANICS_NPCSTATS_H #include #include #include #include "stat.hpp" #include "drawstate.hpp" namespace MWMechanics { /// \brief Additional stats for NPCs /// /// For non-NPC-specific stats, see the CreatureStats struct. /// /// \note For technical reasons the spell list and the currently selected spell is also handled by /// CreatureStats, even though they are actually NPC stats. class NpcStats { public: enum Flag { Flag_ForceRun = 1, Flag_ForceSneak = 2, Flag_Run = 4, Flag_Sneak = 8 }; private: /// NPCs other than the player can only have one faction. But for the sake of consistency /// we use the same data structure for the PC and the NPCs. /// \note the faction key must be in lowercase std::map mFactionRank; DrawState mDrawState; unsigned int mMovementFlags; Stat mSkill[27]; public: NpcStats(); DrawState getDrawState() const; void setDrawState (DrawState state); bool getMovementFlag (Flag flag) const; void setMovementFlag (Flag flag, bool state); const Stat& getSkill (int index) const; Stat& getSkill (int index); std::map& getFactionRanks(); const std::map& getFactionRanks() const; }; } #endif