#ifndef OPENMW_AUTOCALCSPELL_H #define OPENMW_AUTOCALCSPELL_H #include "creaturestats.hpp" #include #include #include #include namespace ESM { struct Spell; struct Race; } namespace MWMechanics { /// Contains algorithm for calculating an NPC's spells based on stats /// @note We might want to move this code to a component later, so the editor can use it for preview purposes std::vector autoCalcNpcSpells(const std::map& actorSkills, const std::map& actorAttributes, const ESM::Race* race); std::vector autoCalcPlayerSpells(const std::map& actorSkills, const std::map& actorAttributes, const ESM::Race* race); // Helpers bool attrSkillCheck(const ESM::Spell* spell, const std::map& actorSkills, const std::map& actorAttributes); void calcWeakestSchool(const ESM::Spell* spell, const std::map& actorSkills, ESM::RefId& effectiveSchool, float& skillTerm); float calcAutoCastChance(const ESM::Spell* spell, const std::map& actorSkills, const std::map& actorAttributes, ESM::RefId effectiveSchool); } #endif