mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 07:56:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef OPENMW_ESM_SKIL_H
 | 
						|
#define OPENMW_ESM_SKIL_H
 | 
						|
 | 
						|
#include <array>
 | 
						|
#include <string>
 | 
						|
 | 
						|
#include "components/esm/defs.hpp"
 | 
						|
#include "components/esm/refid.hpp"
 | 
						|
 | 
						|
namespace ESM
 | 
						|
{
 | 
						|
 | 
						|
    class ESMReader;
 | 
						|
    class ESMWriter;
 | 
						|
 | 
						|
    /*
 | 
						|
     * Skill information
 | 
						|
     *
 | 
						|
     */
 | 
						|
 | 
						|
    struct Skill
 | 
						|
    {
 | 
						|
 | 
						|
        constexpr static RecNameInts sRecordId = REC_SKIL;
 | 
						|
        /// Return a string descriptor for this record type. Currently used for debugging / error logs only.
 | 
						|
        static std::string_view getRecordType() { return "Skill"; }
 | 
						|
 | 
						|
        unsigned int mRecordFlags;
 | 
						|
        RefId mId;
 | 
						|
 | 
						|
        struct SKDTstruct
 | 
						|
        {
 | 
						|
            int mAttribute; // see defs.hpp
 | 
						|
            int mSpecialization; // 0 - Combat, 1 - Magic, 2 - Stealth
 | 
						|
            float mUseValue[4]; // How much skill improves through use. Meaning
 | 
						|
                                // of each field depends on what skill this
 | 
						|
                                // is. We should document this better later.
 | 
						|
        }; // Total size: 24 bytes
 | 
						|
        SKDTstruct mData;
 | 
						|
 | 
						|
        // Skill index. Skils don't have an id ("NAME") like most records,
 | 
						|
        // they only have a numerical index that matches one of the
 | 
						|
        // hard-coded skills in the game.
 | 
						|
        int mIndex;
 | 
						|
 | 
						|
        std::string mDescription;
 | 
						|
 | 
						|
        enum SkillEnum
 | 
						|
        {
 | 
						|
            Block = 0,
 | 
						|
            Armorer = 1,
 | 
						|
            MediumArmor = 2,
 | 
						|
            HeavyArmor = 3,
 | 
						|
            BluntWeapon = 4,
 | 
						|
            LongBlade = 5,
 | 
						|
            Axe = 6,
 | 
						|
            Spear = 7,
 | 
						|
            Athletics = 8,
 | 
						|
            Enchant = 9,
 | 
						|
            Destruction = 10,
 | 
						|
            Alteration = 11,
 | 
						|
            Illusion = 12,
 | 
						|
            Conjuration = 13,
 | 
						|
            Mysticism = 14,
 | 
						|
            Restoration = 15,
 | 
						|
            Alchemy = 16,
 | 
						|
            Unarmored = 17,
 | 
						|
            Security = 18,
 | 
						|
            Sneak = 19,
 | 
						|
            Acrobatics = 20,
 | 
						|
            LightArmor = 21,
 | 
						|
            ShortBlade = 22,
 | 
						|
            Marksman = 23,
 | 
						|
            Mercantile = 24,
 | 
						|
            Speechcraft = 25,
 | 
						|
            HandToHand = 26,
 | 
						|
            Length
 | 
						|
        };
 | 
						|
        static const std::string sSkillNames[Length];
 | 
						|
        static const std::string sSkillNameIds[Length];
 | 
						|
        static const std::string sIconNames[Length];
 | 
						|
        static const std::array<SkillEnum, Length> sSkillIds;
 | 
						|
 | 
						|
        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/index).
 | 
						|
 | 
						|
        static RefId indexToRefId(int index);
 | 
						|
    };
 | 
						|
}
 | 
						|
#endif
 |