OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
loadnpc.hpp
Go to the documentation of this file.
1 #ifndef OPENMW_ESM_NPC_H
2 #define OPENMW_ESM_NPC_H
3 
4 #include <string>
5 #include <vector>
6 
7 #include "defs.hpp"
8 #include "loadcont.hpp"
9 #include "aipackage.hpp"
10 #include "spelllist.hpp"
11 #include "loadskil.hpp"
12 #include "transport.hpp"
13 
14 namespace ESM {
15 
16 class ESMReader;
17 class ESMWriter;
18 
19 /*
20  * NPC definition
21  */
22 
23 struct NPC
24 {
25  static unsigned int sRecordId;
27  static std::string getRecordType() { return "NPC"; }
28 
29  // Services
30  enum Services
31  {
32  // This merchant buys:
33  Weapon = 0x00001,
34  Armor = 0x00002,
35  Clothing = 0x00004,
36  Books = 0x00008,
37  Ingredients = 0x00010,
38  Picks = 0x00020,
39  Probes = 0x00040,
40  Lights = 0x00080,
41  Apparatus = 0x00100,
42  RepairItem = 0x00200,
43  Misc = 0x00400,
44  Potions = 0x02000,
45 
47 
48  // Other services
49  Spells = 0x00800,
50  MagicItems = 0x01000,
51  Training = 0x04000,
52  Spellmaking = 0x08000,
53  Enchanting = 0x10000,
54  Repair = 0x20000
55  };
56 
57  enum Flags
58  {
59  Female = 0x0001,
60  Essential = 0x0002,
61  Respawn = 0x0004,
62  Autocalc = 0x0010,
63  Skeleton = 0x0400, // Skeleton blood effect (white)
64  Metal = 0x0800 // Metal blood effect (golden?)
65  };
66 
67  enum NpcType
68  {
71  };
72 
73  #pragma pack(push)
74  #pragma pack(1)
75 
76  struct NPDTstruct52
77  {
78  short mLevel;
79  unsigned char mStrength,
81  mWillpower,
82  mAgility,
83  mSpeed,
84  mEndurance,
86  mLuck;
87 
88  // mSkill can grow up to 200, it must be unsigned
89  unsigned char mSkills[Skill::Length];
90 
91  char mFactionID;
92  unsigned short mHealth, mMana, mFatigue;
93  unsigned char mDisposition, mReputation, mRank;
94  char mUnknown;
95  int mGold;
96  }; // 52 bytes
97 
98  //Structure for autocalculated characters.
99  // This is only used for load and save operations.
101  {
102  short mLevel;
103  // see above
104  unsigned char mDisposition, mReputation, mRank;
106  int mGold;
107  }; // 12 bytes
108  #pragma pack(pop)
109 
110  unsigned char mNpdtType;
111  //Worth noting when saving the struct:
112  // Although we might read a NPDTstruct12 in, we use NPDTstruct52 internally
114 
115  int getFactionRank() const;
116 
117  int mFlags;
118 
120 
123 
125  bool mHasAI;
126 
128 
129  const std::vector<Transport::Dest>& getTransport() const;
130 
132 
134 
135  // body parts
136  std::string mHair, mHead;
137 
138  void load(ESMReader &esm, bool &isDeleted);
139  void save(ESMWriter &esm, bool isDeleted = false) const;
140 
141  bool isMale() const;
142 
143  void setIsMale(bool value);
144 
145  void blank();
147 
149  void blankNpdt();
150 };
151 }
152 #endif
unsigned short mMana
Definition: loadnpc.hpp:92
unsigned char mStrength
Definition: loadnpc.hpp:79
Definition: loadnpc.hpp:60
Definition: loadnpc.hpp:70
unsigned char mDisposition
Definition: loadnpc.hpp:93
Definition: aipackage.hpp:90
Definition: loadnpc.hpp:36
void blank()
Set record to default state (does not touch the ID).
Definition: loadnpc.cpp:192
AIPackageList mAiPackage
Definition: loadnpc.hpp:131
Definition: aipackage.hpp:17
unsigned short mFatigue
Definition: loadnpc.hpp:92
char mUnknown1
Definition: loadnpc.hpp:105
Definition: loadnpc.hpp:100
Definition: esmreader.hpp:21
unsigned char mReputation
Definition: loadnpc.hpp:93
void blankNpdt()
Resets the mNpdt object.
Definition: loadnpc.cpp:213
unsigned char mRank
Definition: loadnpc.hpp:93
Definition: loadarmo.hpp:66
Definition: loadnpc.hpp:64
unsigned char mSkills[Skill::Length]
Definition: loadnpc.hpp:89
char mUnknown3
Definition: loadnpc.hpp:105
Definition: loadnpc.hpp:37
Transport mTransport
Definition: loadnpc.hpp:127
InventoryList, NPCO subrecord.
Definition: loadcont.hpp:26
Definition: loadskil.hpp:74
const std::vector< Transport::Dest > & getTransport() const
Definition: loadnpc.cpp:236
Definition: loadnpc.hpp:42
unsigned char mWillpower
Definition: loadnpc.hpp:79
Definition: loadnpc.hpp:63
int mFlags
wrapper for mNpdt*, -1 = no rank
Definition: loadnpc.hpp:117
List of travel service destination. Shared by CREA and NPC_ records.
Definition: transport.hpp:16
int getFactionRank() const
Definition: loadnpc.cpp:228
SpellList mSpells
Definition: loadnpc.hpp:122
InventoryList mInventory
Definition: loadnpc.hpp:121
Definition: loadnpc.hpp:62
Definition: loadnpc.hpp:52
Services
Definition: loadnpc.hpp:30
Definition: loadnpc.hpp:40
Definition: loadnpc.hpp:59
std::string mClass
Definition: loadnpc.hpp:133
bool isMale() const
Definition: loadnpc.cpp:181
Definition: esmwriter.hpp:17
std::string mScript
Definition: loadnpc.hpp:133
Definition: loadappa.hpp:16
NpcType
Definition: loadnpc.hpp:67
Definition: loadnpc.hpp:69
Definition: loadnpc.hpp:46
unsigned char mReputation
Definition: loadnpc.hpp:104
void setIsMale(bool value)
Definition: loadnpc.cpp:185
Definition: loadnpc.hpp:39
Definition: loadnpc.hpp:50
void load(ESMReader &esm, bool &isDeleted)
Definition: loadnpc.cpp:11
char mUnknown2
Definition: loadnpc.hpp:105
unsigned char mAgility
Definition: loadnpc.hpp:79
Definition: loadnpc.hpp:23
std::string mModel
Definition: loadnpc.hpp:133
std::string mId
Definition: loadnpc.hpp:133
unsigned char mRank
Definition: loadnpc.hpp:104
int mGold
Definition: loadnpc.hpp:95
Definition: spelllist.hpp:16
Definition: loadnpc.hpp:43
std::string mHead
Definition: loadnpc.hpp:136
char mUnknown
Definition: loadnpc.hpp:94
std::string mFaction
Definition: loadnpc.hpp:133
NPDTstruct52 mNpdt
Definition: loadnpc.hpp:113
AIData mAiData
Definition: loadnpc.hpp:124
unsigned char mPersonality
Definition: loadnpc.hpp:79
int mGold
Definition: loadnpc.hpp:106
unsigned char mLuck
Definition: loadnpc.hpp:79
Definition: loadclot.hpp:18
char mFactionID
Definition: loadnpc.hpp:91
static std::string getRecordType()
Return a string descriptor for this record type. Currently used for debugging / error logs only...
Definition: loadnpc.hpp:27
std::string mRace
Definition: loadnpc.hpp:133
Definition: loadnpc.hpp:51
void save(ESMWriter &esm, bool isDeleted=false) const
Definition: loadnpc.cpp:129
Definition: loadnpc.hpp:61
unsigned char mDisposition
Definition: loadnpc.hpp:104
unsigned char mSpeed
Definition: loadnpc.hpp:79
Definition: loadnpc.hpp:44
unsigned char mNpdtType
Definition: loadnpc.hpp:110
unsigned short mHealth
Definition: loadnpc.hpp:92
Flags
Definition: loadnpc.hpp:57
Definition: loadnpc.hpp:49
std::string mName
Definition: loadnpc.hpp:133
unsigned char mIntelligence
Definition: loadnpc.hpp:79
Definition: loadnpc.hpp:53
Definition: loadnpc.hpp:76
bool mPersistent
Definition: loadnpc.hpp:119
std::string mHair
Definition: loadnpc.hpp:136
static unsigned int sRecordId
Definition: loadnpc.hpp:25
unsigned char mEndurance
Definition: loadnpc.hpp:79
short mLevel
Definition: loadnpc.hpp:102
bool mHasAI
Definition: loadnpc.hpp:125
Definition: loadnpc.hpp:38
short mLevel
Definition: loadnpc.hpp:78
Definition: loadweap.hpp:16
Definition: loadrepa.hpp:12