#pragma once #include "RE/D/DifficultyLevel.h" #include "RE/L/LOCK_LEVEL.h" namespace RE { namespace GamePlayFormulas { enum class ExperienceActivity : std::int32_t { kKillNPC = 0x0, kHackComputer = 0x1, }; inline bool CanHackGateCheck(LOCK_LEVEL a_lockLevel) { using func_t = decltype(&GamePlayFormulas::CanHackGateCheck); static REL::Relocation func{ ID::GamePlayFormulas::CanHackGateCheck }; return func(a_lockLevel); } inline bool CanPickLockGateCheck(LOCK_LEVEL a_lockLevel) { using func_t = decltype(&GamePlayFormulas::CanPickLockGateCheck); static REL::Relocation func{ ID::GamePlayFormulas::CanPickLockGateCheck }; return func(a_lockLevel); } inline float GetExperienceReward(ExperienceActivity a_activity, DifficultyLevel a_difficulty, float a_xpBase) { using func_t = decltype(&GamePlayFormulas::GetExperienceReward); static REL::Relocation func{ ID::GamePlayFormulas::GetExperienceReward }; return func(a_activity, a_difficulty, a_xpBase); } inline float GetLockXPReward(LOCK_LEVEL a_lockLevel) { using func_t = decltype(&GamePlayFormulas::GetLockXPReward); static REL::Relocation func{ ID::GamePlayFormulas::GetLockXPReward }; return func(a_lockLevel); } inline float CalculateItemHealthDamageBonus(float a_itemHealth) { using func_t = decltype(&GamePlayFormulas::CalculateItemHealthDamageBonus); static REL::Relocation func{ ID::GamePlayFormulas::CalculateItemHealthDamageBonus }; return func(a_itemHealth); } inline float CalcSprintingActionPoints(float a_equippedWeight, float a_elapsedTime, float a_endurance) { using func_t = decltype(&GamePlayFormulas::CalcSprintingActionPoints); static REL::Relocation func{ ID::GamePlayFormulas::CalcSpringingActionPoints }; return func(a_equippedWeight, a_elapsedTime, a_endurance); } inline float GetHackingWordCount(float a_playerIntelligence) { using func_t = decltype(&GamePlayFormulas::GetHackingWordCount); static REL::Relocation func{ ID::GamePlayFormulas::GetHackingWordCount }; return func(a_playerIntelligence); } inline float GetForceLockChance(float a_playerPerception, std::int32_t a_lockLevel) { using func_t = decltype(&GamePlayFormulas::GetForceLockChance); static REL::Relocation func{ ID::GamePlayFormulas::GetForceLockChance }; return func(a_playerPerception, a_lockLevel); } } }