summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpsi29a <psi29a@gmail.com>2021-12-21 12:01:09 +0000
committerpsi29a <psi29a@gmail.com>2021-12-21 12:01:09 +0000
commitda3c718fe23cfb356f0c2db4aa1a650c11e9cb8f (patch)
tree3ce11dfe7837d0247182b784b564af974e99c852
parentef60f2d191ebda3b157008c36d469741f120105f (diff)
parent55b066d2bdb42b19251aedfe34e25823a9e31a5d (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.cpp10
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);