|
|
@ -42,8 +42,11 @@ struct PCDT
|
|
|
|
{
|
|
|
|
{
|
|
|
|
PlayerFlags_ViewSwitchDisabled = 0x1,
|
|
|
|
PlayerFlags_ViewSwitchDisabled = 0x1,
|
|
|
|
PlayerFlags_ControlsDisabled = 0x4,
|
|
|
|
PlayerFlags_ControlsDisabled = 0x4,
|
|
|
|
|
|
|
|
PlayerFlags_Sleeping = 0x10,
|
|
|
|
|
|
|
|
PlayerFlags_Waiting = 0x40,
|
|
|
|
PlayerFlags_WeaponDrawn = 0x80,
|
|
|
|
PlayerFlags_WeaponDrawn = 0x80,
|
|
|
|
PlayerFlags_SpellDrawn = 0x100,
|
|
|
|
PlayerFlags_SpellDrawn = 0x100,
|
|
|
|
|
|
|
|
PlayerFlags_InJail = 0x200,
|
|
|
|
PlayerFlags_JumpingDisabled = 0x1000,
|
|
|
|
PlayerFlags_JumpingDisabled = 0x1000,
|
|
|
|
PlayerFlags_LookingDisabled = 0x2000,
|
|
|
|
PlayerFlags_LookingDisabled = 0x2000,
|
|
|
|
PlayerFlags_VanityModeDisabled = 0x4000,
|
|
|
|
PlayerFlags_VanityModeDisabled = 0x4000,
|
|
|
@ -68,19 +71,44 @@ struct PCDT
|
|
|
|
|
|
|
|
|
|
|
|
struct PNAM
|
|
|
|
struct PNAM
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
struct MarkLocation
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
float mX, mY, mZ; // worldspace position
|
|
|
|
|
|
|
|
float mRotZ; // Z angle in radians
|
|
|
|
|
|
|
|
int mCellX, mCellY; // grid coordinates; for interior cells this is always (0, 0)
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
int mPlayerFlags; // controls, camera and draw state
|
|
|
|
int mPlayerFlags; // controls, camera and draw state
|
|
|
|
unsigned int mLevelProgress;
|
|
|
|
unsigned int mLevelProgress;
|
|
|
|
float mSkillProgress[27]; // skill progress, non-uniform scaled
|
|
|
|
float mSkillProgress[27]; // skill progress, non-uniform scaled
|
|
|
|
unsigned char mSkillIncreases[8]; // number of skill increases for each attribute
|
|
|
|
unsigned char mSkillIncreases[8]; // number of skill increases for each attribute
|
|
|
|
unsigned char mUnknown3[84];
|
|
|
|
int mTelekinesisRangeBonus; // in units; seems redundant
|
|
|
|
|
|
|
|
float mVisionBonus; // range: <0.0, 1.0>; affected by light spells and Get/Mod/SetPCVisionBonus
|
|
|
|
|
|
|
|
int mDetectKeyMagnitude; // seems redundant
|
|
|
|
|
|
|
|
int mDetectEnchantmentMagnitude; // seems redundant
|
|
|
|
|
|
|
|
int mDetectAnimalMagnitude; // seems redundant
|
|
|
|
|
|
|
|
MarkLocation mMarkLocation;
|
|
|
|
|
|
|
|
unsigned char mUnknown3[40];
|
|
|
|
unsigned char mSpecIncreases[3]; // number of skill increases for each specialization
|
|
|
|
unsigned char mSpecIncreases[3]; // number of skill increases for each specialization
|
|
|
|
unsigned char mUnknown4;
|
|
|
|
unsigned char mUnknown4;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct ENAM
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int mCellX;
|
|
|
|
|
|
|
|
int mCellY;
|
|
|
|
|
|
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
#pragma pack(pop)
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<FNAM> mFactions;
|
|
|
|
std::vector<FNAM> mFactions;
|
|
|
|
PNAM mPNAM;
|
|
|
|
PNAM mPNAM;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool mHasMark;
|
|
|
|
|
|
|
|
std::string mMNAM; // mark cell name; can also be sDefaultCellname or region name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool mHasENAM;
|
|
|
|
|
|
|
|
ENAM mENAM; // last exterior cell
|
|
|
|
|
|
|
|
|
|
|
|
void load(ESM::ESMReader& esm);
|
|
|
|
void load(ESM::ESMReader& esm);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|