You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.5 KiB
C++
82 lines
1.5 KiB
C++
#ifndef OPENMW_ESSIMPORT_IMPORTSPLM_H
|
|
#define OPENMW_ESSIMPORT_IMPORTSPLM_H
|
|
|
|
#include <vector>
|
|
#include <components/esm/esmcommon.hpp>
|
|
#include <components/esm/util.hpp>
|
|
|
|
namespace ESM
|
|
{
|
|
class ESMReader;
|
|
}
|
|
|
|
namespace ESSImport
|
|
{
|
|
|
|
struct SPLM
|
|
{
|
|
|
|
#pragma pack(push)
|
|
#pragma pack(1)
|
|
struct SPDT // 160 bytes
|
|
{
|
|
int mType; // 1 = spell, 2 = enchantment, 3 = potion
|
|
ESM::NAME32 mId; // base ID of a spell/enchantment/potion
|
|
unsigned char mUnknown[4*4];
|
|
ESM::NAME32 mCasterId;
|
|
ESM::NAME32 mSourceId; // empty for spells
|
|
unsigned char mUnknown2[4*11];
|
|
};
|
|
|
|
struct NPDT // 56 bytes
|
|
{
|
|
ESM::NAME32 mAffectedActorId;
|
|
unsigned char mUnknown[4*2];
|
|
int mMagnitude;
|
|
float mSecondsActive;
|
|
unsigned char mUnknown2[4*2];
|
|
};
|
|
|
|
struct INAM // 40 bytes
|
|
{
|
|
int mUnknown;
|
|
unsigned char mUnknown2;
|
|
ESM::FIXED_STRING<35> mItemId; // disintegrated item / bound item / item to re-equip after expiration
|
|
};
|
|
|
|
struct CNAM // 36 bytes
|
|
{
|
|
int mUnknown; // seems to always be 0
|
|
ESM::NAME32 mSummonedOrCommandedActor[32];
|
|
};
|
|
|
|
struct VNAM // 4 bytes
|
|
{
|
|
int mUnknown;
|
|
};
|
|
|
|
|
|
#pragma pack(pop)
|
|
|
|
struct ActiveEffect
|
|
{
|
|
NPDT mNPDT;
|
|
};
|
|
|
|
struct ActiveSpell
|
|
{
|
|
int mIndex;
|
|
SPDT mSPDT;
|
|
std::string mTarget;
|
|
std::vector<ActiveEffect> mActiveEffects;
|
|
};
|
|
|
|
std::vector<ActiveSpell> mActiveSpells;
|
|
|
|
void load(ESM::ESMReader& esm);
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|