mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 13:26:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			935 lines
		
	
	
	
		
			36 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			935 lines
		
	
	
	
		
			36 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|   Copyright (C) 2015-2020 cc9cii
 | |
| 
 | |
|   This software is provided 'as-is', without any express or implied
 | |
|   warranty.  In no event will the authors be held liable for any damages
 | |
|   arising from the use of this software.
 | |
| 
 | |
|   Permission is granted to anyone to use this software for any purpose,
 | |
|   including commercial applications, and to alter it and redistribute it
 | |
|   freely, subject to the following restrictions:
 | |
| 
 | |
|   1. The origin of this software must not be misrepresented; you must not
 | |
|      claim that you wrote the original software. If you use this software
 | |
|      in a product, an acknowledgment in the product documentation would be
 | |
|      appreciated but is not required.
 | |
|   2. Altered source versions must be plainly marked as such, and must not be
 | |
|      misrepresented as being the original software.
 | |
|   3. This notice may not be removed or altered from any source distribution.
 | |
| 
 | |
|   cc9cii cc9c@iinet.net.au
 | |
| 
 | |
|   Much of the information on the data structures are based on the information
 | |
|   from Tes4Mod:Mod_File_Format and Tes5Mod:File_Formats but also refined by
 | |
|   trial & error.  See http://en.uesp.net/wiki for details.
 | |
| 
 | |
| */
 | |
| #ifndef ESM4_COMMON_H
 | |
| #define ESM4_COMMON_H
 | |
| 
 | |
| #include <cstdint>
 | |
| #include <string>
 | |
| 
 | |
| #include <components/esm/defs.hpp>
 | |
| 
 | |
| #include "formid.hpp"
 | |
| 
 | |
| namespace ESM4
 | |
| {
 | |
|     using ESM::fourCC;
 | |
| 
 | |
|     // Based on http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format
 | |
|     enum RecordTypes
 | |
|     {
 | |
|         REC_AACT = fourCC("AACT"), // Action
 | |
|         REC_ACHR = fourCC("ACHR"), // Actor Reference
 | |
|         REC_ACTI = fourCC("ACTI"), // Activator
 | |
|         REC_ADDN = fourCC("ADDN"), // Addon Node
 | |
|         REC_ALCH = fourCC("ALCH"), // Potion
 | |
|         REC_AMMO = fourCC("AMMO"), // Ammo
 | |
|         REC_ANIO = fourCC("ANIO"), // Animated Object
 | |
|         REC_APPA = fourCC("APPA"), // Apparatus (probably unused)
 | |
|         REC_ARMA = fourCC("ARMA"), // Armature (Model)
 | |
|         REC_ARMO = fourCC("ARMO"), // Armor
 | |
|         REC_ARTO = fourCC("ARTO"), // Art Object
 | |
|         REC_ASPC = fourCC("ASPC"), // Acoustic Space
 | |
|         REC_ASTP = fourCC("ASTP"), // Association Type
 | |
|         REC_AVIF = fourCC("AVIF"), // Actor Values/Perk Tree Graphics
 | |
|         REC_BOOK = fourCC("BOOK"), // Book
 | |
|         REC_BPTD = fourCC("BPTD"), // Body Part Data
 | |
|         REC_CAMS = fourCC("CAMS"), // Camera Shot
 | |
|         REC_CELL = fourCC("CELL"), // Cell
 | |
|         REC_CLAS = fourCC("CLAS"), // Class
 | |
|         REC_CLFM = fourCC("CLFM"), // Color
 | |
|         REC_CLMT = fourCC("CLMT"), // Climate
 | |
|         REC_CLOT = fourCC("CLOT"), // Clothing
 | |
|         REC_COBJ = fourCC("COBJ"), // Constructible Object (recipes)
 | |
|         REC_COLL = fourCC("COLL"), // Collision Layer
 | |
|         REC_CONT = fourCC("CONT"), // Container
 | |
|         REC_CPTH = fourCC("CPTH"), // Camera Path
 | |
|         REC_CREA = fourCC("CREA"), // Creature
 | |
|         REC_CSTY = fourCC("CSTY"), // Combat Style
 | |
|         REC_DEBR = fourCC("DEBR"), // Debris
 | |
|         REC_DIAL = fourCC("DIAL"), // Dialog Topic
 | |
|         REC_DLBR = fourCC("DLBR"), // Dialog Branch
 | |
|         REC_DLVW = fourCC("DLVW"), // Dialog View
 | |
|         REC_DOBJ = fourCC("DOBJ"), // Default Object Manager
 | |
|         REC_DOOR = fourCC("DOOR"), // Door
 | |
|         REC_DUAL = fourCC("DUAL"), // Dual Cast Data (possibly unused)
 | |
|         REC_ECZN = fourCC("ECZN"), // Encounter Zone
 | |
|         REC_EFSH = fourCC("EFSH"), // Effect Shader
 | |
|         REC_ENCH = fourCC("ENCH"), // Enchantment
 | |
|         REC_EQUP = fourCC("EQUP"), // Equip Slot (flag-type values)
 | |
|         REC_EXPL = fourCC("EXPL"), // Explosion
 | |
|         REC_EYES = fourCC("EYES"), // Eyes
 | |
|         REC_FACT = fourCC("FACT"), // Faction
 | |
|         REC_FLOR = fourCC("FLOR"), // Flora
 | |
|         REC_FLST = fourCC("FLST"), // Form List (non-levelled list)
 | |
|         REC_FSTP = fourCC("FSTP"), // Footstep
 | |
|         REC_FSTS = fourCC("FSTS"), // Footstep Set
 | |
|         REC_FURN = fourCC("FURN"), // Furniture
 | |
|         REC_GLOB = fourCC("GLOB"), // Global Variable
 | |
|         REC_GMST = fourCC("GMST"), // Game Setting
 | |
|         REC_GRAS = fourCC("GRAS"), // Grass
 | |
|         REC_GRUP = fourCC("GRUP"), // Form Group
 | |
|         REC_HAIR = fourCC("HAIR"), // Hair
 | |
|         REC_HAZD = fourCC("HAZD"), // Hazard
 | |
|         REC_HDPT = fourCC("HDPT"), // Head Part
 | |
|         REC_IDLE = fourCC("IDLE"), // Idle Animation
 | |
|         REC_IDLM = fourCC("IDLM"), // Idle Marker
 | |
|         REC_IMAD = fourCC("IMAD"), // Image Space Modifier
 | |
|         REC_IMGS = fourCC("IMGS"), // Image Space
 | |
|         REC_INFO = fourCC("INFO"), // Dialog Topic Info
 | |
|         REC_INGR = fourCC("INGR"), // Ingredient
 | |
|         REC_IPCT = fourCC("IPCT"), // Impact Data
 | |
|         REC_IPDS = fourCC("IPDS"), // Impact Data Set
 | |
|         REC_KEYM = fourCC("KEYM"), // Key
 | |
|         REC_KYWD = fourCC("KYWD"), // Keyword
 | |
|         REC_LAND = fourCC("LAND"), // Land
 | |
|         REC_LCRT = fourCC("LCRT"), // Location Reference Type
 | |
|         REC_LCTN = fourCC("LCTN"), // Location
 | |
|         REC_LGTM = fourCC("LGTM"), // Lighting Template
 | |
|         REC_LIGH = fourCC("LIGH"), // Light
 | |
|         REC_LSCR = fourCC("LSCR"), // Load Screen
 | |
|         REC_LTEX = fourCC("LTEX"), // Land Texture
 | |
|         REC_LVLC = fourCC("LVLC"), // Leveled Creature
 | |
|         REC_LVLI = fourCC("LVLI"), // Leveled Item
 | |
|         REC_LVLN = fourCC("LVLN"), // Leveled Actor
 | |
|         REC_LVSP = fourCC("LVSP"), // Leveled Spell
 | |
|         REC_MATO = fourCC("MATO"), // Material Object
 | |
|         REC_MATT = fourCC("MATT"), // Material Type
 | |
|         REC_MESG = fourCC("MESG"), // Message
 | |
|         REC_MGEF = fourCC("MGEF"), // Magic Effect
 | |
|         REC_MISC = fourCC("MISC"), // Misc. Object
 | |
|         REC_MOVT = fourCC("MOVT"), // Movement Type
 | |
|         REC_MSTT = fourCC("MSTT"), // Movable Static
 | |
|         REC_MUSC = fourCC("MUSC"), // Music Type
 | |
|         REC_MUST = fourCC("MUST"), // Music Track
 | |
|         REC_NAVI = fourCC("NAVI"), // Navigation (master data)
 | |
|         REC_NAVM = fourCC("NAVM"), // Nav Mesh
 | |
|         REC_NOTE = fourCC("NOTE"), // Note
 | |
|         REC_NPC_ = fourCC("NPC_"), // Actor (NPC, Creature)
 | |
|         REC_OTFT = fourCC("OTFT"), // Outfit
 | |
|         REC_PACK = fourCC("PACK"), // AI Package
 | |
|         REC_PERK = fourCC("PERK"), // Perk
 | |
|         REC_PGRE = fourCC("PGRE"), // Placed grenade
 | |
|         REC_PHZD = fourCC("PHZD"), // Placed hazard
 | |
|         REC_PROJ = fourCC("PROJ"), // Projectile
 | |
|         REC_QUST = fourCC("QUST"), // Quest
 | |
|         REC_RACE = fourCC("RACE"), // Race / Creature type
 | |
|         REC_REFR = fourCC("REFR"), // Object Reference
 | |
|         REC_REGN = fourCC("REGN"), // Region (Audio/Weather)
 | |
|         REC_RELA = fourCC("RELA"), // Relationship
 | |
|         REC_REVB = fourCC("REVB"), // Reverb Parameters
 | |
|         REC_RFCT = fourCC("RFCT"), // Visual Effect
 | |
|         REC_SBSP = fourCC("SBSP"), // Subspace (TES4 only?)
 | |
|         REC_SCEN = fourCC("SCEN"), // Scene
 | |
|         REC_SCPT = fourCC("SCPT"), // Script
 | |
|         REC_SCRL = fourCC("SCRL"), // Scroll
 | |
|         REC_SGST = fourCC("SGST"), // Sigil Stone
 | |
|         REC_SHOU = fourCC("SHOU"), // Shout
 | |
|         REC_SLGM = fourCC("SLGM"), // Soul Gem
 | |
|         REC_SMBN = fourCC("SMBN"), // Story Manager Branch Node
 | |
|         REC_SMEN = fourCC("SMEN"), // Story Manager Event Node
 | |
|         REC_SMQN = fourCC("SMQN"), // Story Manager Quest Node
 | |
|         REC_SNCT = fourCC("SNCT"), // Sound Category
 | |
|         REC_SNDR = fourCC("SNDR"), // Sound Reference
 | |
|         REC_SOPM = fourCC("SOPM"), // Sound Output Model
 | |
|         REC_SOUN = fourCC("SOUN"), // Sound
 | |
|         REC_SPEL = fourCC("SPEL"), // Spell
 | |
|         REC_SPGD = fourCC("SPGD"), // Shader Particle Geometry
 | |
|         REC_STAT = fourCC("STAT"), // Static
 | |
|         REC_TACT = fourCC("TACT"), // Talking Activator
 | |
|         REC_TERM = fourCC("TERM"), // Terminal
 | |
|         REC_TES4 = fourCC("TES4"), // Plugin info
 | |
|         REC_TREE = fourCC("TREE"), // Tree
 | |
|         REC_TXST = fourCC("TXST"), // Texture Set
 | |
|         REC_VTYP = fourCC("VTYP"), // Voice Type
 | |
|         REC_WATR = fourCC("WATR"), // Water Type
 | |
|         REC_WEAP = fourCC("WEAP"), // Weapon
 | |
|         REC_WOOP = fourCC("WOOP"), // Word Of Power
 | |
|         REC_WRLD = fourCC("WRLD"), // World Space
 | |
|         REC_WTHR = fourCC("WTHR"), // Weather
 | |
|         REC_ACRE = fourCC("ACRE"), // Placed Creature (TES4 only?)
 | |
|         REC_PGRD = fourCC("PGRD"), // Pathgrid (TES4 only?)
 | |
|         REC_ROAD = fourCC("ROAD"), // Road (TES4 only?)
 | |
|         REC_IMOD = fourCC("IMOD"), // Item Mod
 | |
|         REC_PWAT = fourCC("PWAT"), // Placeable Water
 | |
|         REC_SCOL = fourCC("SCOL"), // Static Collection
 | |
|         REC_CCRD = fourCC("CCRD"), // Caravan Card
 | |
|         REC_CMNY = fourCC("CMNY"), // Caravan Money
 | |
|         REC_ALOC = fourCC("ALOC"), // Audio Location Controller
 | |
|         REC_MSET = fourCC("MSET")  // Media Set
 | |
|     };
 | |
| 
 | |
|     enum SubRecordTypes
 | |
|     {
 | |
|         SUB_HEDR = fourCC("HEDR"),
 | |
|         SUB_CNAM = fourCC("CNAM"),
 | |
|         SUB_SNAM = fourCC("SNAM"), // TES4 only?
 | |
|         SUB_MAST = fourCC("MAST"),
 | |
|         SUB_DATA = fourCC("DATA"),
 | |
|         SUB_ONAM = fourCC("ONAM"),
 | |
|         SUB_INTV = fourCC("INTV"),
 | |
|         SUB_INCC = fourCC("INCC"),
 | |
|         SUB_OFST = fourCC("OFST"), // TES4 only?
 | |
|         SUB_DELE = fourCC("DELE"), // TES4 only?
 | |
| 
 | |
|         SUB_DNAM = fourCC("DNAM"),
 | |
|         SUB_EDID = fourCC("EDID"),
 | |
|         SUB_FULL = fourCC("FULL"),
 | |
|         SUB_LTMP = fourCC("LTMP"),
 | |
|         SUB_MHDT = fourCC("MHDT"),
 | |
|         SUB_MNAM = fourCC("MNAM"),
 | |
|         SUB_MODL = fourCC("MODL"),
 | |
|         SUB_NAM0 = fourCC("NAM0"),
 | |
|         SUB_NAM2 = fourCC("NAM2"),
 | |
|         SUB_NAM3 = fourCC("NAM3"),
 | |
|         SUB_NAM4 = fourCC("NAM4"),
 | |
|         SUB_NAM9 = fourCC("NAM9"),
 | |
|         SUB_NAMA = fourCC("NAMA"),
 | |
|         SUB_PNAM = fourCC("PNAM"),
 | |
|         SUB_RNAM = fourCC("RNAM"),
 | |
|         SUB_TNAM = fourCC("TNAM"),
 | |
|         SUB_UNAM = fourCC("UNAM"),
 | |
|         SUB_WCTR = fourCC("WCTR"),
 | |
|         SUB_WNAM = fourCC("WNAM"),
 | |
|         SUB_XEZN = fourCC("XEZN"),
 | |
|         SUB_XLCN = fourCC("XLCN"),
 | |
|         SUB_XXXX = fourCC("XXXX"),
 | |
|         SUB_ZNAM = fourCC("ZNAM"),
 | |
|         SUB_MODT = fourCC("MODT"),
 | |
|         SUB_ICON = fourCC("ICON"), // TES4 only?
 | |
| 
 | |
|         SUB_NVER = fourCC("NVER"),
 | |
|         SUB_NVMI = fourCC("NVMI"),
 | |
|         SUB_NVPP = fourCC("NVPP"),
 | |
|         SUB_NVSI = fourCC("NVSI"),
 | |
| 
 | |
|         SUB_NVNM = fourCC("NVNM"),
 | |
|         SUB_NNAM = fourCC("NNAM"),
 | |
| 
 | |
|         SUB_XCLC = fourCC("XCLC"),
 | |
|         SUB_XCLL = fourCC("XCLL"),
 | |
|         SUB_TVDT = fourCC("TVDT"),
 | |
|         SUB_XCGD = fourCC("XCGD"),
 | |
|         SUB_LNAM = fourCC("LNAM"),
 | |
|         SUB_XCLW = fourCC("XCLW"),
 | |
|         SUB_XNAM = fourCC("XNAM"),
 | |
|         SUB_XCLR = fourCC("XCLR"),
 | |
|         SUB_XWCS = fourCC("XWCS"),
 | |
|         SUB_XWCN = fourCC("XWCN"),
 | |
|         SUB_XWCU = fourCC("XWCU"),
 | |
|         SUB_XCWT = fourCC("XCWT"),
 | |
|         SUB_XOWN = fourCC("XOWN"),
 | |
|         SUB_XILL = fourCC("XILL"),
 | |
|         SUB_XWEM = fourCC("XWEM"),
 | |
|         SUB_XCCM = fourCC("XCCM"),
 | |
|         SUB_XCAS = fourCC("XCAS"),
 | |
|         SUB_XCMO = fourCC("XCMO"),
 | |
|         SUB_XCIM = fourCC("XCIM"),
 | |
|         SUB_XCMT = fourCC("XCMT"), // TES4 only?
 | |
|         SUB_XRNK = fourCC("XRNK"), // TES4 only?
 | |
|         SUB_XGLB = fourCC("XGLB"), // TES4 only?
 | |
| 
 | |
|         SUB_VNML = fourCC("VNML"),
 | |
|         SUB_VHGT = fourCC("VHGT"),
 | |
|         SUB_VCLR = fourCC("VCLR"),
 | |
|         SUA_BTXT = fourCC("BTXT"),
 | |
|         SUB_ATXT = fourCC("ATXT"),
 | |
|         SUB_VTXT = fourCC("VTXT"),
 | |
|         SUB_VTEX = fourCC("VTEX"),
 | |
| 
 | |
|         SUB_HNAM = fourCC("HNAM"),
 | |
|         SUB_GNAM = fourCC("GNAM"),
 | |
| 
 | |
|         SUB_RCLR = fourCC("RCLR"),
 | |
|         SUB_RPLI = fourCC("RPLI"),
 | |
|         SUB_RPLD = fourCC("RPLD"),
 | |
|         SUB_RDAT = fourCC("RDAT"),
 | |
|         SUB_RDMD = fourCC("RDMD"), // TES4 only?
 | |
|         SUB_RDSD = fourCC("RDSD"), // TES4 only?
 | |
|         SUB_RDGS = fourCC("RDGS"), // TES4 only?
 | |
|         SUB_RDMO = fourCC("RDMO"),
 | |
|         SUB_RDSA = fourCC("RDSA"),
 | |
|         SUB_RDWT = fourCC("RDWT"),
 | |
|         SUB_RDOT = fourCC("RDOT"),
 | |
|         SUB_RDMP = fourCC("RDMP"),
 | |
| 
 | |
|         SUB_MODB = fourCC("MODB"),
 | |
|         SUB_OBND = fourCC("OBND"),
 | |
|         SUB_MODS = fourCC("MODS"),
 | |
| 
 | |
|         SUB_NAME = fourCC("NAME"),
 | |
|         SUB_XMRK = fourCC("XMRK"),
 | |
|         SUB_FNAM = fourCC("FNAM"),
 | |
|         SUB_XSCL = fourCC("XSCL"),
 | |
|         SUB_XTEL = fourCC("XTEL"),
 | |
|         SUB_XTRG = fourCC("XTRG"),
 | |
|         SUB_XSED = fourCC("XSED"),
 | |
|         SUB_XLOD = fourCC("XLOD"),
 | |
|         SUB_XPCI = fourCC("XPCI"),
 | |
|         SUB_XLOC = fourCC("XLOC"),
 | |
|         SUB_XESP = fourCC("XESP"),
 | |
|         SUB_XLCM = fourCC("XLCM"),
 | |
|         SUB_XRTM = fourCC("XRTM"),
 | |
|         SUB_XACT = fourCC("XACT"),
 | |
|         SUB_XCNT = fourCC("XCNT"),
 | |
|         SUB_VMAD = fourCC("VMAD"),
 | |
|         SUB_XPRM = fourCC("XPRM"),
 | |
|         SUB_XMBO = fourCC("XMBO"),
 | |
|         SUB_XPOD = fourCC("XPOD"),
 | |
|         SUB_XRMR = fourCC("XRMR"),
 | |
|         SUB_INAM = fourCC("INAM"),
 | |
|         SUB_SCHR = fourCC("SCHR"),
 | |
|         SUB_XLRM = fourCC("XLRM"),
 | |
|         SUB_XRGD = fourCC("XRGD"),
 | |
|         SUB_XRDS = fourCC("XRDS"),
 | |
|         SUB_XEMI = fourCC("XEMI"),
 | |
|         SUB_XLIG = fourCC("XLIG"),
 | |
|         SUB_XALP = fourCC("XALP"),
 | |
|         SUB_XNDP = fourCC("XNDP"),
 | |
|         SUB_XAPD = fourCC("XAPD"),
 | |
|         SUB_XAPR = fourCC("XAPR"),
 | |
|         SUB_XLIB = fourCC("XLIB"),
 | |
|         SUB_XLKR = fourCC("XLKR"),
 | |
|         SUB_XLRT = fourCC("XLRT"),
 | |
|         SUB_XCVL = fourCC("XCVL"),
 | |
|         SUB_XCVR = fourCC("XCVR"),
 | |
|         SUB_XCZA = fourCC("XCZA"),
 | |
|         SUB_XCZC = fourCC("XCZC"),
 | |
|         SUB_XFVC = fourCC("XFVC"),
 | |
|         SUB_XHTW = fourCC("XHTW"),
 | |
|         SUB_XIS2 = fourCC("XIS2"),
 | |
|         SUB_XMBR = fourCC("XMBR"),
 | |
|         SUB_XCCP = fourCC("XCCP"),
 | |
|         SUB_XPWR = fourCC("XPWR"),
 | |
|         SUB_XTRI = fourCC("XTRI"),
 | |
|         SUB_XATR = fourCC("XATR"),
 | |
|         SUB_XPRD = fourCC("XPRD"),
 | |
|         SUB_XPPA = fourCC("XPPA"),
 | |
|         SUB_PDTO = fourCC("PDTO"),
 | |
|         SUB_XLRL = fourCC("XLRL"),
 | |
| 
 | |
|         SUB_QNAM = fourCC("QNAM"),
 | |
|         SUB_COCT = fourCC("COCT"),
 | |
|         SUB_COED = fourCC("COED"),
 | |
|         SUB_CNTO = fourCC("CNTO"),
 | |
|         SUB_SCRI = fourCC("SCRI"),
 | |
| 
 | |
|         SUB_BNAM = fourCC("BNAM"),
 | |
| 
 | |
|         SUB_BMDT = fourCC("BMDT"),
 | |
|         SUB_MOD2 = fourCC("MOD2"),
 | |
|         SUB_MOD3 = fourCC("MOD3"),
 | |
|         SUB_MOD4 = fourCC("MOD4"),
 | |
|         SUB_MO2B = fourCC("MO2B"),
 | |
|         SUB_MO3B = fourCC("MO3B"),
 | |
|         SUB_MO4B = fourCC("MO4B"),
 | |
|         SUB_MO2T = fourCC("MO2T"),
 | |
|         SUB_MO3T = fourCC("MO3T"),
 | |
|         SUB_MO4T = fourCC("MO4T"),
 | |
|         SUB_ANAM = fourCC("ANAM"),
 | |
|         SUB_ENAM = fourCC("ENAM"),
 | |
|         SUB_ICO2 = fourCC("ICO2"),
 | |
| 
 | |
|         SUB_ACBS = fourCC("ACBS"),
 | |
|         SUB_SPLO = fourCC("SPLO"),
 | |
|         SUB_AIDT = fourCC("AIDT"),
 | |
|         SUB_PKID = fourCC("PKID"),
 | |
|         SUB_HCLR = fourCC("HCLR"),
 | |
|         SUB_FGGS = fourCC("FGGS"),
 | |
|         SUB_FGGA = fourCC("FGGA"),
 | |
|         SUB_FGTS = fourCC("FGTS"),
 | |
|         SUB_KFFZ = fourCC("KFFZ"),
 | |
| 
 | |
|         SUB_PFIG = fourCC("PFIG"),
 | |
|         SUB_PFPC = fourCC("PFPC"),
 | |
| 
 | |
|         SUB_XHRS = fourCC("XHRS"),
 | |
|         SUB_XMRC = fourCC("XMRC"),
 | |
| 
 | |
|         SUB_SNDD = fourCC("SNDD"),
 | |
|         SUB_SNDX = fourCC("SNDX"),
 | |
| 
 | |
|         SUB_DESC = fourCC("DESC"),
 | |
| 
 | |
|         SUB_ENIT = fourCC("ENIT"),
 | |
|         SUB_EFID = fourCC("EFID"),
 | |
|         SUB_EFIT = fourCC("EFIT"),
 | |
|         SUB_SCIT = fourCC("SCIT"),
 | |
| 
 | |
|         SUB_SOUL = fourCC("SOUL"),
 | |
|         SUB_SLCP = fourCC("SLCP"),
 | |
| 
 | |
|         SUB_CSCR = fourCC("CSCR"),
 | |
|         SUB_CSDI = fourCC("CSDI"),
 | |
|         SUB_CSDC = fourCC("CSDC"),
 | |
|         SUB_NIFZ = fourCC("NIFZ"),
 | |
|         SUB_CSDT = fourCC("CSDT"),
 | |
|         SUB_NAM1 = fourCC("NAM1"),
 | |
|         SUB_NIFT = fourCC("NIFT"),
 | |
| 
 | |
|         SUB_LVLD = fourCC("LVLD"),
 | |
|         SUB_LVLF = fourCC("LVLF"),
 | |
|         SUB_LVLO = fourCC("LVLO"),
 | |
| 
 | |
|         SUB_BODT = fourCC("BODT"),
 | |
|         SUB_YNAM = fourCC("YNAM"),
 | |
|         SUB_DEST = fourCC("DEST"),
 | |
|         SUB_DMDL = fourCC("DMDL"),
 | |
|         SUB_DMDS = fourCC("DMDS"),
 | |
|         SUB_DMDT = fourCC("DMDT"),
 | |
|         SUB_DSTD = fourCC("DSTD"),
 | |
|         SUB_DSTF = fourCC("DSTF"),
 | |
|         SUB_KNAM = fourCC("KNAM"),
 | |
|         SUB_KSIZ = fourCC("KSIZ"),
 | |
|         SUB_KWDA = fourCC("KWDA"),
 | |
|         SUB_VNAM = fourCC("VNAM"),
 | |
|         SUB_SDSC = fourCC("SDSC"),
 | |
|         SUB_MO2S = fourCC("MO2S"),
 | |
|         SUB_MO4S = fourCC("MO4S"),
 | |
|         SUB_BOD2 = fourCC("BOD2"),
 | |
|         SUB_BAMT = fourCC("BAMT"),
 | |
|         SUB_BIDS = fourCC("BIDS"),
 | |
|         SUB_ETYP = fourCC("ETYP"),
 | |
|         SUB_BMCT = fourCC("BMCT"),
 | |
|         SUB_MICO = fourCC("MICO"),
 | |
|         SUB_MIC2 = fourCC("MIC2"),
 | |
|         SUB_EAMT = fourCC("EAMT"),
 | |
|         SUB_EITM = fourCC("EITM"),
 | |
| 
 | |
|         SUB_SCTX = fourCC("SCTX"),
 | |
|         SUB_XLTW = fourCC("XLTW"),
 | |
|         SUB_XMBP = fourCC("XMBP"),
 | |
|         SUB_XOCP = fourCC("XOCP"),
 | |
|         SUB_XRGB = fourCC("XRGB"),
 | |
|         SUB_XSPC = fourCC("XSPC"),
 | |
|         SUB_XTNM = fourCC("XTNM"),
 | |
|         SUB_ATKR = fourCC("ATKR"),
 | |
|         SUB_CRIF = fourCC("CRIF"),
 | |
|         SUB_DOFT = fourCC("DOFT"),
 | |
|         SUB_DPLT = fourCC("DPLT"),
 | |
|         SUB_ECOR = fourCC("ECOR"),
 | |
|         SUB_ATKD = fourCC("ATKD"),
 | |
|         SUB_ATKE = fourCC("ATKE"),
 | |
|         SUB_FTST = fourCC("FTST"),
 | |
|         SUB_HCLF = fourCC("HCLF"),
 | |
|         SUB_NAM5 = fourCC("NAM5"),
 | |
|         SUB_NAM6 = fourCC("NAM6"),
 | |
|         SUB_NAM7 = fourCC("NAM7"),
 | |
|         SUB_NAM8 = fourCC("NAM8"),
 | |
|         SUB_PRKR = fourCC("PRKR"),
 | |
|         SUB_PRKZ = fourCC("PRKZ"),
 | |
|         SUB_SOFT = fourCC("SOFT"),
 | |
|         SUB_SPCT = fourCC("SPCT"),
 | |
|         SUB_TINC = fourCC("TINC"),
 | |
|         SUB_TIAS = fourCC("TIAS"),
 | |
|         SUB_TINI = fourCC("TINI"),
 | |
|         SUB_TINV = fourCC("TINV"),
 | |
|         SUB_TPLT = fourCC("TPLT"),
 | |
|         SUB_VTCK = fourCC("VTCK"),
 | |
|         SUB_SHRT = fourCC("SHRT"),
 | |
|         SUB_SPOR = fourCC("SPOR"),
 | |
|         SUB_XHOR = fourCC("XHOR"),
 | |
|         SUB_CTDA = fourCC("CTDA"),
 | |
|         SUB_CRDT = fourCC("CRDT"),
 | |
|         SUB_FNMK = fourCC("FNMK"),
 | |
|         SUB_FNPR = fourCC("FNPR"),
 | |
|         SUB_WBDT = fourCC("WBDT"),
 | |
|         SUB_QUAL = fourCC("QUAL"),
 | |
|         SUB_INDX = fourCC("INDX"),
 | |
|         SUB_ATTR = fourCC("ATTR"),
 | |
|         SUB_MTNM = fourCC("MTNM"),
 | |
|         SUB_UNES = fourCC("UNES"),
 | |
|         SUB_TIND = fourCC("TIND"),
 | |
|         SUB_TINL = fourCC("TINL"),
 | |
|         SUB_TINP = fourCC("TINP"),
 | |
|         SUB_TINT = fourCC("TINT"),
 | |
|         SUB_TIRS = fourCC("TIRS"),
 | |
|         SUB_PHWT = fourCC("PHWT"),
 | |
|         SUB_AHCF = fourCC("AHCF"),
 | |
|         SUB_AHCM = fourCC("AHCM"),
 | |
|         SUB_HEAD = fourCC("HEAD"),
 | |
|         SUB_MPAI = fourCC("MPAI"),
 | |
|         SUB_MPAV = fourCC("MPAV"),
 | |
|         SUB_DFTF = fourCC("DFTF"),
 | |
|         SUB_DFTM = fourCC("DFTM"),
 | |
|         SUB_FLMV = fourCC("FLMV"),
 | |
|         SUB_FTSF = fourCC("FTSF"),
 | |
|         SUB_FTSM = fourCC("FTSM"),
 | |
|         SUB_MTYP = fourCC("MTYP"),
 | |
|         SUB_PHTN = fourCC("PHTN"),
 | |
|         SUB_RNMV = fourCC("RNMV"),
 | |
|         SUB_RPRF = fourCC("RPRF"),
 | |
|         SUB_RPRM = fourCC("RPRM"),
 | |
|         SUB_SNMV = fourCC("SNMV"),
 | |
|         SUB_SPED = fourCC("SPED"),
 | |
|         SUB_SWMV = fourCC("SWMV"),
 | |
|         SUB_WKMV = fourCC("WKMV"),
 | |
|         SUB_LLCT = fourCC("LLCT"),
 | |
|         SUB_IDLF = fourCC("IDLF"),
 | |
|         SUB_IDLA = fourCC("IDLA"),
 | |
|         SUB_IDLC = fourCC("IDLC"),
 | |
|         SUB_IDLT = fourCC("IDLT"),
 | |
|         SUB_DODT = fourCC("DODT"),
 | |
|         SUB_TX00 = fourCC("TX00"),
 | |
|         SUB_TX01 = fourCC("TX01"),
 | |
|         SUB_TX02 = fourCC("TX02"),
 | |
|         SUB_TX03 = fourCC("TX03"),
 | |
|         SUB_TX04 = fourCC("TX04"),
 | |
|         SUB_TX05 = fourCC("TX05"),
 | |
|         SUB_TX06 = fourCC("TX06"),
 | |
|         SUB_TX07 = fourCC("TX07"),
 | |
|         SUB_BPND = fourCC("BPND"),
 | |
|         SUB_BPTN = fourCC("BPTN"),
 | |
|         SUB_BPNN = fourCC("BPNN"),
 | |
|         SUB_BPNT = fourCC("BPNT"),
 | |
|         SUB_BPNI = fourCC("BPNI"),
 | |
|         SUB_RAGA = fourCC("RAGA"),
 | |
| 
 | |
|         SUB_QSTI = fourCC("QSTI"),
 | |
|         SUB_QSTR = fourCC("QSTR"),
 | |
|         SUB_QSDT = fourCC("QSDT"),
 | |
|         SUB_SCDA = fourCC("SCDA"),
 | |
|         SUB_SCRO = fourCC("SCRO"),
 | |
|         SUB_QSTA = fourCC("QSTA"),
 | |
|         SUB_CTDT = fourCC("CTDT"),
 | |
|         SUB_SCHD = fourCC("SCHD"),
 | |
|         SUB_TCLF = fourCC("TCLF"),
 | |
|         SUB_TCLT = fourCC("TCLT"),
 | |
|         SUB_TRDT = fourCC("TRDT"),
 | |
|         SUB_TPIC = fourCC("TPIC"),
 | |
| 
 | |
|         SUB_PKDT = fourCC("PKDT"),
 | |
|         SUB_PSDT = fourCC("PSDT"),
 | |
|         SUB_PLDT = fourCC("PLDT"),
 | |
|         SUB_PTDT = fourCC("PTDT"),
 | |
|         SUB_PGRP = fourCC("PGRP"),
 | |
|         SUB_PGRR = fourCC("PGRR"),
 | |
|         SUB_PGRI = fourCC("PGRI"),
 | |
|         SUB_PGRL = fourCC("PGRL"),
 | |
|         SUB_PGAG = fourCC("PGAG"),
 | |
|         SUB_FLTV = fourCC("FLTV"),
 | |
| 
 | |
|         SUB_XHLT = fourCC("XHLT"), // Unofficial Oblivion Patch
 | |
|         SUB_XCHG = fourCC("XCHG"), // thievery.exp
 | |
| 
 | |
|         SUB_ITXT = fourCC("ITXT"),
 | |
|         SUB_MO5T = fourCC("MO5T"),
 | |
|         SUB_MOD5 = fourCC("MOD5"),
 | |
|         SUB_MDOB = fourCC("MDOB"),
 | |
|         SUB_SPIT = fourCC("SPIT"),
 | |
|         SUB_PTDA = fourCC("PTDA"), // TES5
 | |
|         SUB_PFOR = fourCC("PFOR"), // TES5
 | |
|         SUB_PFO2 = fourCC("PFO2"), // TES5
 | |
|         SUB_PRCB = fourCC("PRCB"), // TES5
 | |
|         SUB_PKCU = fourCC("PKCU"), // TES5
 | |
|         SUB_PKC2 = fourCC("PKC2"), // TES5
 | |
|         SUB_CITC = fourCC("CITC"), // TES5
 | |
|         SUB_CIS1 = fourCC("CIS1"), // TES5
 | |
|         SUB_CIS2 = fourCC("CIS2"), // TES5
 | |
|         SUB_TIFC = fourCC("TIFC"), // TES5
 | |
|         SUB_ALCA = fourCC("ALCA"), // TES5
 | |
|         SUB_ALCL = fourCC("ALCL"), // TES5
 | |
|         SUB_ALCO = fourCC("ALCO"), // TES5
 | |
|         SUB_ALDN = fourCC("ALDN"), // TES5
 | |
|         SUB_ALEA = fourCC("ALEA"), // TES5
 | |
|         SUB_ALED = fourCC("ALED"), // TES5
 | |
|         SUB_ALEQ = fourCC("ALEQ"), // TES5
 | |
|         SUB_ALFA = fourCC("ALFA"), // TES5
 | |
|         SUB_ALFC = fourCC("ALFC"), // TES5
 | |
|         SUB_ALFD = fourCC("ALFD"), // TES5
 | |
|         SUB_ALFE = fourCC("ALFE"), // TES5
 | |
|         SUB_ALFI = fourCC("ALFI"), // TES5
 | |
|         SUB_ALFL = fourCC("ALFL"), // TES5
 | |
|         SUB_ALFR = fourCC("ALFR"), // TES5
 | |
|         SUB_ALID = fourCC("ALID"), // TES5
 | |
|         SUB_ALLS = fourCC("ALLS"), // TES5
 | |
|         SUB_ALNA = fourCC("ALNA"), // TES5
 | |
|         SUB_ALNT = fourCC("ALNT"), // TES5
 | |
|         SUB_ALPC = fourCC("ALPC"), // TES5
 | |
|         SUB_ALRT = fourCC("ALRT"), // TES5
 | |
|         SUB_ALSP = fourCC("ALSP"), // TES5
 | |
|         SUB_ALST = fourCC("ALST"), // TES5
 | |
|         SUB_ALUA = fourCC("ALUA"), // TES5
 | |
|         SUB_FLTR = fourCC("FLTR"), // TES5
 | |
|         SUB_QTGL = fourCC("QTGL"), // TES5
 | |
|         SUB_TWAT = fourCC("TWAT"), // TES5
 | |
|         SUB_XIBS = fourCC("XIBS"), // FO3
 | |
|         SUB_REPL = fourCC("REPL"), // FO3
 | |
|         SUB_BIPL = fourCC("BIPL"), // FO3
 | |
|         SUB_MODD = fourCC("MODD"), // FO3
 | |
|         SUB_MOSD = fourCC("MOSD"), // FO3
 | |
|         SUB_MO3S = fourCC("MO3S"), // FO3
 | |
|         SUB_XCET = fourCC("XCET"), // FO3
 | |
|         SUB_LVLG = fourCC("LVLG"), // FO3
 | |
|         SUB_NVCI = fourCC("NVCI"), // FO3
 | |
|         SUB_NVVX = fourCC("NVVX"), // FO3
 | |
|         SUB_NVTR = fourCC("NVTR"), // FO3
 | |
|         SUB_NVCA = fourCC("NVCA"), // FO3
 | |
|         SUB_NVDP = fourCC("NVDP"), // FO3
 | |
|         SUB_NVGD = fourCC("NVGD"), // FO3
 | |
|         SUB_NVEX = fourCC("NVEX"), // FO3
 | |
|         SUB_XHLP = fourCC("XHLP"), // FO3
 | |
|         SUB_XRDO = fourCC("XRDO"), // FO3
 | |
|         SUB_XAMT = fourCC("XAMT"), // FO3
 | |
|         SUB_XAMC = fourCC("XAMC"), // FO3
 | |
|         SUB_XRAD = fourCC("XRAD"), // FO3
 | |
|         SUB_XORD = fourCC("XORD"), // FO3
 | |
|         SUB_XCLP = fourCC("XCLP"), // FO3
 | |
|         SUB_NEXT = fourCC("NEXT"), // FO3
 | |
|         SUB_QOBJ = fourCC("QOBJ"), // FO3
 | |
|         SUB_POBA = fourCC("POBA"), // FO3
 | |
|         SUB_POCA = fourCC("POCA"), // FO3
 | |
|         SUB_POEA = fourCC("POEA"), // FO3
 | |
|         SUB_PKDD = fourCC("PKDD"), // FO3
 | |
|         SUB_PKD2 = fourCC("PKD2"), // FO3
 | |
|         SUB_PKPT = fourCC("PKPT"), // FO3
 | |
|         SUB_PKED = fourCC("PKED"), // FO3
 | |
|         SUB_PKE2 = fourCC("PKE2"), // FO3
 | |
|         SUB_PKAM = fourCC("PKAM"), // FO3
 | |
|         SUB_PUID = fourCC("PUID"), // FO3
 | |
|         SUB_PKW3 = fourCC("PKW3"), // FO3
 | |
|         SUB_PTD2 = fourCC("PTD2"), // FO3
 | |
|         SUB_PLD2 = fourCC("PLD2"), // FO3
 | |
|         SUB_PKFD = fourCC("PKFD"), // FO3
 | |
|         SUB_IDLB = fourCC("IDLB"), // FO3
 | |
|         SUB_XDCR = fourCC("XDCR"), // FO3
 | |
|         SUB_DALC = fourCC("DALC"), // FO3
 | |
|         SUB_IMPS = fourCC("IMPS"), // FO3 Anchorage
 | |
|         SUB_IMPF = fourCC("IMPF"), // FO3 Anchorage
 | |
| 
 | |
|         SUB_XATO = fourCC("XATO"), // FONV
 | |
|         SUB_INFC = fourCC("INFC"), // FONV
 | |
|         SUB_INFX = fourCC("INFX"), // FONV
 | |
|         SUB_TDUM = fourCC("TDUM"), // FONV
 | |
|         SUB_TCFU = fourCC("TCFU"), // FONV
 | |
|         SUB_DAT2 = fourCC("DAT2"), // FONV
 | |
|         SUB_RCIL = fourCC("RCIL"), // FONV
 | |
|         SUB_MMRK = fourCC("MMRK"), // FONV
 | |
|         SUB_SCRV = fourCC("SCRV"), // FONV
 | |
|         SUB_SCVR = fourCC("SCVR"), // FONV
 | |
|         SUB_SLSD = fourCC("SLSD"), // FONV
 | |
|         SUB_XSRF = fourCC("XSRF"), // FONV
 | |
|         SUB_XSRD = fourCC("XSRD"), // FONV
 | |
|         SUB_WMI1 = fourCC("WMI1"), // FONV
 | |
|         SUB_RDID = fourCC("RDID"), // FONV
 | |
|         SUB_RDSB = fourCC("RDSB"), // FONV
 | |
|         SUB_RDSI = fourCC("RDSI"), // FONV
 | |
|         SUB_BRUS = fourCC("BRUS"), // FONV
 | |
|         SUB_VATS = fourCC("VATS"), // FONV
 | |
|         SUB_VANM = fourCC("VANM"), // FONV
 | |
|         SUB_MWD1 = fourCC("MWD1"), // FONV
 | |
|         SUB_MWD2 = fourCC("MWD2"), // FONV
 | |
|         SUB_MWD3 = fourCC("MWD3"), // FONV
 | |
|         SUB_MWD4 = fourCC("MWD4"), // FONV
 | |
|         SUB_MWD5 = fourCC("MWD5"), // FONV
 | |
|         SUB_MWD6 = fourCC("MWD6"), // FONV
 | |
|         SUB_MWD7 = fourCC("MWD7"), // FONV
 | |
|         SUB_WMI2 = fourCC("WMI2"), // FONV
 | |
|         SUB_WMI3 = fourCC("WMI3"), // FONV
 | |
|         SUB_WMS1 = fourCC("WMS1"), // FONV
 | |
|         SUB_WMS2 = fourCC("WMS2"), // FONV
 | |
|         SUB_WNM1 = fourCC("WNM1"), // FONV
 | |
|         SUB_WNM2 = fourCC("WNM2"), // FONV
 | |
|         SUB_WNM3 = fourCC("WNM3"), // FONV
 | |
|         SUB_WNM4 = fourCC("WNM4"), // FONV
 | |
|         SUB_WNM5 = fourCC("WNM5"), // FONV
 | |
|         SUB_WNM6 = fourCC("WNM6"), // FONV
 | |
|         SUB_WNM7 = fourCC("WNM7"), // FONV
 | |
|         SUB_JNAM = fourCC("JNAM"), // FONV
 | |
|         SUB_EFSD = fourCC("EFSD"), // FONV DeadMoney
 | |
|     };
 | |
| 
 | |
|     enum MagicEffectID
 | |
|     {
 | |
|         // Alteration
 | |
|         EFI_BRDN = fourCC("BRDN"),
 | |
|         EFI_FTHR = fourCC("FTHR"),
 | |
|         EFI_FISH = fourCC("FISH"),
 | |
|         EFI_FRSH = fourCC("FRSH"),
 | |
|         EFI_OPEN = fourCC("OPNN"),
 | |
|         EFI_SHLD = fourCC("SHLD"),
 | |
|         EFI_LISH = fourCC("LISH"),
 | |
|         EFI_WABR = fourCC("WABR"),
 | |
|         EFI_WAWA = fourCC("WAWA"),
 | |
| 
 | |
|         // Conjuration
 | |
|         EFI_BABO = fourCC("BABO"), // Bound Boots
 | |
|         EFI_BACU = fourCC("BACU"), // Bound Cuirass
 | |
|         EFI_BAGA = fourCC("BAGA"), // Bound Gauntlets
 | |
|         EFI_BAGR = fourCC("BAGR"), // Bound Greaves
 | |
|         EFI_BAHE = fourCC("BAHE"), // Bound Helmet
 | |
|         EFI_BASH = fourCC("BASH"), // Bound Shield
 | |
|         EFI_BWAX = fourCC("BWAX"), // Bound Axe
 | |
|         EFI_BWBO = fourCC("BWBO"), // Bound Bow
 | |
|         EFI_BWDA = fourCC("BWDA"), // Bound Dagger
 | |
|         EFI_BWMA = fourCC("BWMA"), // Bound Mace
 | |
|         EFI_BWSW = fourCC("BWSW"), // Bound Sword
 | |
|         EFI_Z001 = fourCC("Z001"), // Summon Rufio's Ghost
 | |
|         EFI_Z002 = fourCC("Z002"), // Summon Ancestor Guardian
 | |
|         EFI_Z003 = fourCC("Z003"), // Summon Spiderling
 | |
|         EFI_Z005 = fourCC("Z005"), // Summon Bear
 | |
|         EFI_ZCLA = fourCC("ZCLA"), // Summon Clannfear
 | |
|         EFI_ZDAE = fourCC("ZDAE"), // Summon Daedroth
 | |
|         EFI_ZDRE = fourCC("ZDRE"), // Summon Dremora
 | |
|         EFI_ZDRL = fourCC("ZDRL"), // Summon Dremora Lord
 | |
|         EFI_ZFIA = fourCC("ZFIA"), // Summon Flame Atronach
 | |
|         EFI_ZFRA = fourCC("ZFRA"), // Summon Frost Atronach
 | |
|         EFI_ZGHO = fourCC("ZGHO"), // Summon Ghost
 | |
|         EFI_ZHDZ = fourCC("ZHDZ"), // Summon Headless Zombie
 | |
|         EFI_ZLIC = fourCC("ZLIC"), // Summon Lich
 | |
|         EFI_ZSCA = fourCC("ZSCA"), // Summon Scamp
 | |
|         EFI_ZSKE = fourCC("ZSKE"), // Summon Skeleton
 | |
|         EFI_ZSKA = fourCC("ZSKA"), // Summon Skeleton Guardian
 | |
|         EFI_ZSKH = fourCC("ZSKH"), // Summon Skeleton Hero
 | |
|         EFI_ZSKC = fourCC("ZSKC"), // Summon Skeleton Champion
 | |
|         EFI_ZSPD = fourCC("ZSPD"), // Summon Spider Daedra
 | |
|         EFI_ZSTA = fourCC("ZSTA"), // Summon Storm Atronach
 | |
|         EFI_ZWRA = fourCC("ZWRA"), // Summon Faded Wraith
 | |
|         EFI_ZWRL = fourCC("ZWRL"), // Summon Gloom Wraith
 | |
|         EFI_ZXIV = fourCC("ZXIV"), // Summon Xivilai
 | |
|         EFI_ZZOM = fourCC("ZZOM"), // Summon Zombie
 | |
|         EFI_TURN = fourCC("TURN"), // Turn Undead
 | |
| 
 | |
|         // Destruction
 | |
|         EFI_DGAT = fourCC("DGAT"), // Damage Attribute
 | |
|         EFI_DGFA = fourCC("DGFA"), // Damage Fatigue
 | |
|         EFI_DGHE = fourCC("DGHE"), // Damage Health
 | |
|         EFI_DGSP = fourCC("DGSP"), // Damage Magicka
 | |
|         EFI_DIAR = fourCC("DIAR"), // Disintegrate Armor
 | |
|         EFI_DIWE = fourCC("DIWE"), // Disintegrate Weapon
 | |
|         EFI_DRAT = fourCC("DRAT"), // Drain Attribute
 | |
|         EFI_DRFA = fourCC("DRFA"), // Drain Fatigue
 | |
|         EFI_DRHE = fourCC("DRHE"), // Drain Health
 | |
|         EFI_DRSP = fourCC("DRSP"), // Drain Magicka
 | |
|         EFI_DRSK = fourCC("DRSK"), // Drain Skill
 | |
|         EFI_FIDG = fourCC("FIDG"), // Fire Damage
 | |
|         EFI_FRDG = fourCC("FRDG"), // Frost Damage
 | |
|         EFI_SHDG = fourCC("SHDG"), // Shock Damage
 | |
|         EFI_WKDI = fourCC("WKDI"), // Weakness to Disease
 | |
|         EFI_WKFI = fourCC("WKFI"), // Weakness to Fire
 | |
|         EFI_WKFR = fourCC("WKFR"), // Weakness to Frost
 | |
|         EFI_WKMA = fourCC("WKMA"), // Weakness to Magic
 | |
|         EFI_WKNW = fourCC("WKNW"), // Weakness to Normal Weapons
 | |
|         EFI_WKPO = fourCC("WKPO"), // Weakness to Poison
 | |
|         EFI_WKSH = fourCC("WKSH"), // Weakness to Shock
 | |
| 
 | |
|         // Illusion
 | |
|         EFI_CALM = fourCC("CALM"), // Calm
 | |
|         EFI_CHML = fourCC("CHML"), // Chameleon
 | |
|         EFI_CHRM = fourCC("CHRM"), // Charm
 | |
|         EFI_COCR = fourCC("COCR"), // Command Creature
 | |
|         EFI_COHU = fourCC("COHU"), // Command Humanoid
 | |
|         EFI_DEMO = fourCC("DEMO"), // Demoralize
 | |
|         EFI_FRNZ = fourCC("FRNZ"), // Frenzy
 | |
|         EFI_INVI = fourCC("INVI"), // Invisibility
 | |
|         EFI_LGHT = fourCC("LGHT"), // Light
 | |
|         EFI_NEYE = fourCC("NEYE"), // Night-Eye
 | |
|         EFI_PARA = fourCC("PARA"), // Paralyze
 | |
|         EFI_RALY = fourCC("RALY"), // Rally
 | |
|         EFI_SLNC = fourCC("SLNC"), // Silence
 | |
| 
 | |
|         // Mysticism
 | |
|         EFI_DTCT = fourCC("DTCT"), // Detect Life
 | |
|         EFI_DSPL = fourCC("DSPL"), // Dispel
 | |
|         EFI_REDG = fourCC("REDG"), // Reflect Damage
 | |
|         EFI_RFLC = fourCC("RFLC"), // Reflect Spell
 | |
|         EFI_STRP = fourCC("STRP"), // Soul Trap
 | |
|         EFI_SABS = fourCC("SABS"), // Spell Absorption
 | |
|         EFI_TELE = fourCC("TELE"), // Telekinesis
 | |
| 
 | |
|         // Restoration
 | |
|         EFI_ABAT = fourCC("ABAT"), // Absorb Attribute
 | |
|         EFI_ABFA = fourCC("ABFA"), // Absorb Fatigue
 | |
|         EFI_ABHe = fourCC("ABHe"), // Absorb Health
 | |
|         EFI_ABSP = fourCC("ABSP"), // Absorb Magicka
 | |
|         EFI_ABSK = fourCC("ABSK"), // Absorb Skill
 | |
|         EFI_1400 = fourCC("1400"), // Cure Disease
 | |
|         EFI_CUPA = fourCC("CUPA"), // Cure Paralysis
 | |
|         EFI_CUPO = fourCC("CUPO"), // Cure Poison
 | |
|         EFI_FOAT = fourCC("FOAT"), // Fortify Attribute
 | |
|         EFI_FOFA = fourCC("FOFA"), // Fortify Fatigue
 | |
|         EFI_FOHE = fourCC("FOHE"), // Fortify Health
 | |
|         EFI_FOSP = fourCC("FOSP"), // Fortify Magicka
 | |
|         EFI_FOSK = fourCC("FOSK"), // Fortify Skill
 | |
|         EFI_RSDI = fourCC("RSDI"), // Resist Disease
 | |
|         EFI_RSFI = fourCC("RSFI"), // Resist Fire
 | |
|         EFI_RSFR = fourCC("RSFR"), // Resist Frost
 | |
|         EFI_RSMA = fourCC("RSMA"), // Resist Magic
 | |
|         EFI_RSNW = fourCC("RSNW"), // Resist Normal Weapons
 | |
|         EFI_RSPA = fourCC("RSPA"), // Resist Paralysis
 | |
|         EFI_RSPO = fourCC("RSPO"), // Resist Poison
 | |
|         EFI_RSSH = fourCC("RSSH"), // Resist Shock
 | |
|         EFI_REAT = fourCC("REAT"), // Restore Attribute
 | |
|         EFI_REFA = fourCC("REFA"), // Restore Fatigue
 | |
|         EFI_REHE = fourCC("REHE"), // Restore Health
 | |
|         EFI_RESP = fourCC("RESP"), // Restore Magicka
 | |
| 
 | |
|         // Effects
 | |
|         EFI_LOCK = fourCC("LOCK"), // Lock Lock
 | |
|         EFI_SEFF = fourCC("SEFF"), // Script Effect
 | |
|         EFI_Z020 = fourCC("Z020"), // Summon 20 Extra
 | |
|         EFI_MYHL = fourCC("MYHL"), // Summon Mythic Dawn Helmet
 | |
|         EFI_MYTH = fourCC("MYTH"), // Summon Mythic Dawn Armor
 | |
|         EFI_REAN = fourCC("REAN"), // Reanimate
 | |
|         EFI_DISE = fourCC("DISE"), // Disease Info
 | |
|         EFI_POSN = fourCC("POSN"), // Poison Info
 | |
|         EFI_DUMY = fourCC("DUMY"), // Mehrunes Dagon Custom Effect
 | |
|         EFI_STMA = fourCC("STMA"), // Stunted Magicka
 | |
|         EFI_SUDG = fourCC("SUDG"), // Sun Damage
 | |
|         EFI_VAMP = fourCC("VAMP"), // Vampirism
 | |
|         EFI_DARK = fourCC("DARK"), // Darkness
 | |
|         EFI_RSWD = fourCC("RSWD")  // Resist Water Damage
 | |
|     };
 | |
| 
 | |
|     // Based on http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format#Groups
 | |
|     enum GroupType
 | |
|     {
 | |
|         Grp_RecordType           = 0,
 | |
|         Grp_WorldChild           = 1,
 | |
|         Grp_InteriorCell         = 2,
 | |
|         Grp_InteriorSubCell      = 3,
 | |
|         Grp_ExteriorCell         = 4,
 | |
|         Grp_ExteriorSubCell      = 5,
 | |
|         Grp_CellChild            = 6,
 | |
|         Grp_TopicChild           = 7,
 | |
|         Grp_CellPersistentChild  = 8,
 | |
|         Grp_CellTemporaryChild   = 9,
 | |
|         Grp_CellVisibleDistChild = 10
 | |
|     };
 | |
| 
 | |
|     // Based on http://www.uesp.net/wiki/Tes5Mod:Mod_File_Format#Records
 | |
|     enum RecordFlag
 | |
|     {
 | |
|         Rec_ESM        = 0x00000001, // (TES4 record only) Master (ESM) file.
 | |
|         Rec_Deleted    = 0x00000020, // Deleted
 | |
|         Rec_Constant   = 0x00000040, // Constant
 | |
|         Rec_HiddenLMap = 0x00000040, // (REFR) Hidden From Local Map (Needs Confirmation: Related to shields)
 | |
|         Rec_Localized  = 0x00000080, // (TES4 record only) Is localized. This will make Skyrim load the
 | |
|                                      //   .STRINGS, .DLSTRINGS, and .ILSTRINGS files associated with the mod.
 | |
|                                      //   If this flag is not set, lstrings are treated as zstrings.
 | |
|         Rec_FireOff    = 0x00000080, // (PHZD) Turn off fire
 | |
|         Rec_UpdateAnim = 0x00000100, // Must Update Anims
 | |
|         Rec_NoAccess   = 0x00000100, // (REFR) Inaccessible
 | |
|         Rec_Hidden     = 0x00000200, // (REFR) Hidden from local map
 | |
|         Rec_StartDead  = 0x00000200, // (ACHR) Starts dead /(REFR) MotionBlurCastsShadows
 | |
|         Rec_Persistent = 0x00000400, // Quest item / Persistent reference
 | |
|         Rec_DispMenu   = 0x00000400, // (LSCR) Displays in Main Menu
 | |
|         Rec_Disabled   = 0x00000800, // Initially disabled
 | |
|         Rec_Ignored    = 0x00001000, // Ignored
 | |
|         Rec_VisDistant = 0x00008000, // Visible when distant
 | |
|         Rec_RandAnim   = 0x00010000, // (ACTI) Random Animation Start
 | |
|         Rec_Danger     = 0x00020000, // (ACTI) Dangerous / Off limits (Interior cell)
 | |
|                                      //   Dangerous Can't be set withough Ignore Object Interaction
 | |
|         Rec_Compressed = 0x00040000, // Data is compressed
 | |
|         Rec_CanNotWait = 0x00080000, // Can't wait
 | |
|         Rec_IgnoreObj  = 0x00100000, // (ACTI) Ignore Object Interaction
 | |
|                                      //   Ignore Object Interaction Sets Dangerous Automatically
 | |
|         Rec_Marker     = 0x00800000, // Is Marker
 | |
|         Rec_Obstacle   = 0x02000000, // (ACTI) Obstacle / (REFR) No AI Acquire
 | |
|         Rec_NavMFilter = 0x04000000, // NavMesh Gen - Filter
 | |
|         Rec_NavMBBox   = 0x08000000, // NavMesh Gen - Bounding Box
 | |
|         Rec_ExitToTalk = 0x10000000, // (FURN) Must Exit to Talk
 | |
|         Rec_Refected   = 0x10000000, // (REFR) Reflected By Auto Water
 | |
|         Rec_ChildUse   = 0x20000000, // (FURN/IDLM) Child Can Use
 | |
|         Rec_NoHavok    = 0x20000000, // (REFR) Don't Havok Settle
 | |
|         Rec_NavMGround = 0x40000000, // NavMesh Gen - Ground
 | |
|         Rec_NoRespawn  = 0x40000000, // (REFR) NoRespawn
 | |
|         Rec_MultiBound = 0x80000000  // (REFR) MultiBound
 | |
|     };
 | |
| 
 | |
| #pragma pack(push, 1)
 | |
|     // NOTE: the label field of a group is not reliable (http://www.uesp.net/wiki/Tes4Mod:Mod_File_Format)
 | |
|     union GroupLabel
 | |
|     {
 | |
|         std::uint32_t value;     // formId, blockNo or raw int representation of type
 | |
|         char recordType[4];      // record type in ascii
 | |
|         std::int16_t grid[2];    // grid y, x (note the reverse order)
 | |
|     };
 | |
| 
 | |
|     struct GroupTypeHeader
 | |
|     {
 | |
|         std::uint32_t typeId;
 | |
|         std::uint32_t groupSize; // includes the 24 bytes (20 for TES4) of header (i.e. this struct)
 | |
|         GroupLabel    label;     // format based on type
 | |
|         std::int32_t  type;
 | |
|         std::uint16_t stamp;     // & 0xff for day, & 0xff00 for months since Dec 2002 (i.e. 1 = Jan 2003)
 | |
|         std::uint16_t unknown;
 | |
|         std::uint16_t version;   // not in TES4
 | |
|         std::uint16_t unknown2;  // not in TES4
 | |
|     };
 | |
| 
 | |
|     struct RecordTypeHeader
 | |
|     {
 | |
|         std::uint32_t typeId;
 | |
|         std::uint32_t dataSize;  // does *not* include 24 bytes (20 for TES4) of header
 | |
|         std::uint32_t flags;
 | |
|         FormId        id;
 | |
|         std::uint32_t revision;
 | |
|         std::uint16_t version;  // not in TES4
 | |
|         std::uint16_t unknown;  // not in TES4
 | |
|     };
 | |
| 
 | |
|     union RecordHeader
 | |
|     {
 | |
|         struct GroupTypeHeader  group;
 | |
|         struct RecordTypeHeader record;
 | |
|     };
 | |
| 
 | |
|     struct SubRecordHeader
 | |
|     {
 | |
|         std::uint32_t typeId;
 | |
|         std::uint16_t dataSize;
 | |
|     };
 | |
| 
 | |
|     // Grid, CellGrid and Vertex are shared by NVMI(NAVI) and NVNM(NAVM)
 | |
| 
 | |
|     struct Grid
 | |
|     {
 | |
|         std::int16_t x;
 | |
|         std::int16_t y;
 | |
|     };
 | |
| 
 | |
|     union CellGrid
 | |
|     {
 | |
|         FormId cellId;
 | |
|         Grid   grid;
 | |
|     };
 | |
| 
 | |
|     struct Vertex
 | |
|     {
 | |
|         float x;
 | |
|         float y;
 | |
|         float z;
 | |
|     };
 | |
| #pragma pack(pop)
 | |
| 
 | |
|     // For pretty printing GroupHeader labels
 | |
|     std::string printLabel(const GroupLabel& label, const std::uint32_t type);
 | |
| 
 | |
|     void gridToString(std::int16_t x, std::int16_t y, std::string& str);
 | |
| }
 | |
| 
 | |
| #endif // ESM4_COMMON_H
 |