1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#ifndef OPENMW_ESM_ENCH_H
#define OPENMW_ESM_ENCH_H
#include <cstdint>
#include <string>
#include "components/esm/defs.hpp"
#include "components/esm/refid.hpp"
#include "effectlist.hpp"
namespace ESM
{
class ESMReader;
class ESMWriter;
/*
* Enchantments
*/
struct Enchantment
{
constexpr static RecNameInts sRecordId = REC_ENCH;
/// Return a string descriptor for this record type. Currently used for debugging / error logs only.
static std::string_view getRecordType() { return "Enchantment"; }
enum Type
{
CastOnce = 0,
WhenStrikes = 1,
WhenUsed = 2,
ConstantEffect = 3
};
enum Flags
{
Autocalc = 0x01
};
struct ENDTstruct
{
int32_t mType;
int32_t mCost;
int32_t mCharge;
int32_t mFlags;
};
uint32_t mRecordFlags;
RefId mId;
ENDTstruct mData;
EffectList mEffects;
void load(ESMReader& esm, bool& isDeleted);
void save(ESMWriter& esm, bool isDeleted = false) const;
void blank();
///< Set record to default state (does not touch the ID).
};
}
#endif
|