mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-30 23:56:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef _ESM_MGEF_H
 | |
| #define _ESM_MGEF_H
 | |
| 
 | |
| #include "esm_reader.hpp"
 | |
| 
 | |
| namespace ESM {
 | |
| 
 | |
| struct MagicEffect
 | |
| {
 | |
|   enum Flags 
 | |
|     {
 | |
|       SpellMaking = 0x0200,
 | |
|       Enchanting  = 0x0400,
 | |
|       Negative    = 0x0800 // A harmful effect. Will determine whether
 | |
|                            // eg. NPCs regard this spell as an attack.
 | |
|     };
 | |
| 
 | |
|   struct MEDTstruct
 | |
|   {
 | |
|     int school; // SpellSchool, see defs.hpp
 | |
|     float baseCost;
 | |
|     int flags;
 | |
|     // Properties of the fired magic 'ball' I think
 | |
|     int red, blue, green;
 | |
|     float speed, size, sizeCap;
 | |
|   }; // 36 bytes
 | |
| 
 | |
|   MEDTstruct data;
 | |
| 
 | |
|   std::string icon, particle,   // Textures
 | |
|     casting, hit, area,         // Statics
 | |
|     bolt,                       // Weapon
 | |
|     castSound, boltSound,
 | |
|     hitSound, areaSound,        // Sounds
 | |
|     description;
 | |
| 
 | |
|   // Index of this magical effect. Corresponds to one of the
 | |
|   // hard-coded effects in the original engine:
 | |
|   // 0-136 in Morrowind
 | |
|   // 137 in Tribunal
 | |
|   // 138-140 in Bloodmoon (also changes 64?)
 | |
|   // 141-142 are summon effects introduced in bloodmoon, but not used
 | |
|   // there. They can be redefined in mods by setting the name in GMST
 | |
|   // sEffectSummonCreature04/05 creature id in
 | |
|   // sMagicCreature04ID/05ID.
 | |
|   int index;
 | |
| 
 | |
|   void load(ESMReader &esm)
 | |
|   {
 | |
|     esm.getHNT(index, "INDX");
 | |
| 
 | |
|     esm.getHNT(data, "MEDT", 36);
 | |
|     icon = esm.getHNOString("ITEX");
 | |
|     particle = esm.getHNOString("PTEX");
 | |
| 
 | |
|     boltSound = esm.getHNOString("BSND");
 | |
|     castSound = esm.getHNOString("CSND");
 | |
|     hitSound = esm.getHNOString("HSND");
 | |
|     areaSound = esm.getHNOString("ASND");
 | |
| 
 | |
|     casting = esm.getHNOString("CVFX");
 | |
|     bolt = esm.getHNOString("BVFX");
 | |
|     hit = esm.getHNOString("HVFX");
 | |
|     area = esm.getHNOString("AVFX");
 | |
| 
 | |
|     description = esm.getHNOString("DESC");
 | |
|   }
 | |
| };
 | |
| }
 | |
| #endif
 |