From 55b066d2bdb42b19251aedfe34e25823a9e31a5d Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Tue, 21 Dec 2021 10:50:28 +0100 Subject: [PATCH] Preserve the original caster if classic reflected absorb spells behaviour is on --- apps/openmw/mwmechanics/activespells.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 +#include + #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);