mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 02:56:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef _ESM_DEFS_H
 | 
						|
#define _ESM_DEFS_H
 | 
						|
 | 
						|
#include "esm_reader.hpp"
 | 
						|
 | 
						|
namespace ESM {
 | 
						|
 | 
						|
// Pixel color value. Standard four-byte rr,gg,bb,aa format.
 | 
						|
typedef int32_t Color;
 | 
						|
 | 
						|
enum VarType
 | 
						|
  {
 | 
						|
    VT_Unknown,
 | 
						|
    VT_None,
 | 
						|
    VT_Short,
 | 
						|
    VT_Int,
 | 
						|
    VT_Long,
 | 
						|
    VT_Float,
 | 
						|
    VT_String,
 | 
						|
    VT_Ignored
 | 
						|
  };
 | 
						|
 | 
						|
enum Specialization
 | 
						|
  {
 | 
						|
    SPC_Combat  = 0,
 | 
						|
    SPC_Magic   = 1,
 | 
						|
    SPC_Stealth = 2
 | 
						|
  };
 | 
						|
 | 
						|
/** A list of references to spells and spell effects. This is shared
 | 
						|
    between the records BSGN, NPC and RACE.
 | 
						|
*/
 | 
						|
struct SpellList
 | 
						|
{
 | 
						|
  std::vector<std::string> list;
 | 
						|
 | 
						|
  void load(ESMReader &esm)
 | 
						|
  {
 | 
						|
    while(esm.isNextSub("NPCS"))
 | 
						|
      list.push_back(esm.getHString());
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
/** Defines a spell effect. Shared between SPEL (Spells), ALCH
 | 
						|
    (Potions) and ENCH (Item enchantments) records
 | 
						|
*/
 | 
						|
#pragma pack(push)
 | 
						|
#pragma pack(1)
 | 
						|
 | 
						|
// Position and rotation
 | 
						|
struct Position
 | 
						|
{
 | 
						|
  float pos[3];
 | 
						|
  float rot[3];
 | 
						|
};
 | 
						|
 | 
						|
struct ENAMstruct
 | 
						|
{
 | 
						|
  // Magical effect, hard-coded ID
 | 
						|
  short effectID;
 | 
						|
 | 
						|
  // Which skills/attributes are affected (for restore/drain spells
 | 
						|
  // etc.)
 | 
						|
  char skill, attribute; // -1 if N/A
 | 
						|
 | 
						|
  // Other spell parameters
 | 
						|
  int range; // 0 - self, 1 - touch, 2 - target
 | 
						|
  int area, duration, magnMin, magnMax;
 | 
						|
 | 
						|
  // Struct size should be 24 bytes
 | 
						|
};
 | 
						|
#pragma pack(pop)
 | 
						|
 | 
						|
struct EffectList
 | 
						|
{
 | 
						|
  std::vector<ENAMstruct> list;
 | 
						|
 | 
						|
  void load(ESMReader &esm)
 | 
						|
  {
 | 
						|
    ENAMstruct s;    
 | 
						|
    while(esm.isNextSub("ENAM"))
 | 
						|
      {
 | 
						|
        esm.getHT(s, 24);
 | 
						|
        list.push_back(s);
 | 
						|
      }
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
#endif
 |