2015-01-16 23:11:36 +00:00
|
|
|
#ifndef OPENMW_ESSIMPORT_ACDT_H
|
|
|
|
#define OPENMW_ESSIMPORT_ACDT_H
|
|
|
|
|
2015-01-18 18:59:29 +00:00
|
|
|
#include <string>
|
|
|
|
|
2015-01-21 21:25:37 +00:00
|
|
|
#include <components/esm/cellref.hpp>
|
|
|
|
|
2015-01-22 02:54:33 +00:00
|
|
|
#include "importscri.hpp"
|
|
|
|
|
2015-01-18 18:59:29 +00:00
|
|
|
namespace ESM
|
|
|
|
{
|
2015-01-26 00:17:16 +00:00
|
|
|
class ESMReader;
|
2015-01-18 18:59:29 +00:00
|
|
|
}
|
|
|
|
|
2015-01-16 23:11:36 +00:00
|
|
|
namespace ESSImport
|
|
|
|
{
|
|
|
|
|
2015-01-20 19:19:08 +00:00
|
|
|
enum ACDTFlags
|
|
|
|
{
|
|
|
|
TalkedToPlayer = 0x4
|
|
|
|
};
|
2015-01-18 18:59:29 +00:00
|
|
|
|
2015-01-16 23:11:36 +00:00
|
|
|
/// Actor data, shared by (at least) REFR and CellRef
|
2015-01-20 18:30:39 +00:00
|
|
|
#pragma pack(push)
|
|
|
|
#pragma pack(1)
|
2015-01-16 23:11:36 +00:00
|
|
|
struct ACDT
|
|
|
|
{
|
2015-01-20 18:30:39 +00:00
|
|
|
// Note, not stored at *all*:
|
|
|
|
// - Level changes are lost on reload, except for the player (there it's in the NPC record).
|
2015-01-20 19:19:08 +00:00
|
|
|
unsigned char mUnknown[12];
|
|
|
|
unsigned char mFlags; // ACDTFlags
|
|
|
|
unsigned char mUnknown1[3];
|
2015-01-20 18:30:39 +00:00
|
|
|
float mBreathMeter; // Seconds left before drowning
|
|
|
|
unsigned char mUnknown2[20];
|
2015-01-16 23:11:36 +00:00
|
|
|
float mDynamic[3][2];
|
2015-01-20 18:30:39 +00:00
|
|
|
unsigned char mUnknown3[16];
|
2015-01-16 23:11:36 +00:00
|
|
|
float mAttributes[8][2];
|
2015-01-20 19:19:08 +00:00
|
|
|
unsigned char mUnknown4[112];
|
|
|
|
unsigned int mGoldPool;
|
|
|
|
unsigned char mUnknown5[4];
|
2015-01-16 23:11:36 +00:00
|
|
|
};
|
2015-01-20 18:30:39 +00:00
|
|
|
#pragma pack(pop)
|
2015-01-16 23:11:36 +00:00
|
|
|
|
2015-01-21 21:25:37 +00:00
|
|
|
struct ActorData : public ESM::CellRef
|
2015-01-18 18:59:29 +00:00
|
|
|
{
|
|
|
|
ACDT mACDT;
|
|
|
|
|
|
|
|
int mSkills[27][2];
|
|
|
|
|
|
|
|
// creature combat stats, base and modified
|
|
|
|
// I think these can be ignored in the conversion, because it is not possible
|
|
|
|
// to change them ingame
|
|
|
|
int mCombatStats[3][2];
|
|
|
|
|
2015-01-23 23:18:17 +00:00
|
|
|
std::string mSelectedSpell;
|
|
|
|
std::string mSelectedEnchantItem;
|
|
|
|
|
2015-01-22 02:54:33 +00:00
|
|
|
SCRI mSCRI;
|
2015-01-18 18:59:29 +00:00
|
|
|
|
|
|
|
void load(ESM::ESMReader& esm);
|
|
|
|
};
|
|
|
|
|
2015-01-16 23:11:36 +00:00
|
|
|
/// Unknown, shared by (at least) REFR and CellRef
|
|
|
|
struct ACSC
|
|
|
|
{
|
|
|
|
unsigned char unknown[112];
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|