1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-20 13:53:53 +00:00
openmw/components/esm/loadcrea.hpp
Alexander "Ace" Olofsson f675d8d039 Merge branch 'master'
2012-06-11 19:09:10 +02:00

90 lines
2.1 KiB
C++

#ifndef _ESM_CREA_H
#define _ESM_CREA_H
#include "record.hpp"
#include "esm_reader.hpp"
#include "esm_writer.hpp"
#include "loadcont.hpp"
#include "defs.hpp"
namespace ESM
{
/*
* Creature definition
*
*/
struct Creature : public Record
{
// Default is 0x48?
enum Flags
{
Biped = 0x001, Respawn = 0x002, Weapon = 0x004, // Has weapon and shield
None = 0x008, // ??
Swims = 0x010,
Flies = 0x020, // Don't know what happens if several
Walks = 0x040, // of these are set
Essential = 0x080,
Skeleton = 0x400, // Does not have normal blood
Metal = 0x800
// Has 'golden' blood
};
enum Type
{
Creatures = 0,
Deadra = 1,
Undead = 2,
Humanoid = 3
};
struct NPDTstruct
{
int type;
// For creatures we obviously have to use ints, not shorts and
// bytes like we use for NPCs.... this file format just makes so
// much sense! (Still, _much_ easier to decode than the NIFs.)
int level;
int strength, intelligence, willpower, agility, speed, endurance,
personality, luck, health, mana, fatigue; // Stats
int soul; // The creatures soul value (used with soul gems.)
int combat, magic, stealth; // Don't know yet.
int attack[6]; // AttackMin1, AttackMax1, ditto2, ditto3
int gold;
}; // 96 bytes
struct AIDTstruct
{
// These are probabilities
char hello, u1, fight, flee, alarm, u2, u3, u4;
// The last u's might be the skills that this NPC can train you
// in?
int services; // See the NPC::Services enum
}; // 12 bytes
NPDTstruct data;
AIData aiData;
int flags;
float scale;
std::string model, name, script, original; // Base creature that this is a modification of
// Defined in loadcont.hpp
InventoryList inventory;
SpellList spells;
void load(ESMReader &esm);
void save(ESMWriter &esm);
bool hasAI;
AIDTstruct AI;
std::string mId;
int getName() { return REC_CREA; }
};
}
#endif