diff options
author | psi29a <psi29a@gmail.com> | 2021-12-21 12:01:09 +0000 |
---|---|---|
committer | psi29a <psi29a@gmail.com> | 2021-12-21 12:01:09 +0000 |
commit | da3c718fe23cfb356f0c2db4aa1a650c11e9cb8f (patch) | |
tree | 3ce11dfe7837d0247182b784b564af974e99c852 | |
parent | ef60f2d191ebda3b157008c36d469741f120105f (diff) | |
parent | 55b066d2bdb42b19251aedfe34e25823a9e31a5d (diff) |
Merge branch 'i_am_the_caster_now' into 'master'
Preserve the original caster if classic reflected absorb spells behaviour is on
Closes #6511
See merge request OpenMW/openmw!1497
-rw-r--r-- | apps/openmw/mwmechanics/activespells.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/apps/openmw/mwmechanics/activespells.cpp b/apps/openmw/mwmechanics/activespells.cpp index d435bd6c44..3fbb347098 100644 --- a/apps/openmw/mwmechanics/activespells.cpp +++ b/apps/openmw/mwmechanics/activespells.cpp @@ -9,6 +9,8 @@ #include <components/esm/loadmgef.hpp> +#include <components/settings/settings.hpp> + #include "creaturestats.hpp" #include "spellcasting.hpp" #include "spelleffects.hpp" @@ -236,7 +238,13 @@ namespace MWMechanics if(result == MagicApplicationResult::REFLECTED) { if(!reflected) - reflected = {*spellIt, ptr}; + { + static const bool keepOriginalCaster = Settings::Manager::getBool("classic reflected absorb spells behavior", "Game"); + if(keepOriginalCaster) + reflected = {*spellIt, caster}; + else + reflected = {*spellIt, ptr}; + } auto& reflectedEffect = reflected->mEffects.emplace_back(*it); reflectedEffect.mFlags = ESM::ActiveEffect::Flag_Ignore_Reflect | ESM::ActiveEffect::Flag_Ignore_SpellAbsorption; it = spellIt->mEffects.erase(it); |