diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b565c37bd..f89bb609a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -180,6 +180,7 @@ Bug #7993: Cannot load Bloodmoon without Tribunal Bug #7997: Can toggle perspective when paralyzed Bug #8002: Portable light sources held by creatures do not emit lighting + Bug #8018: Potion effects should never explode and always apply on self Feature #1415: Infinite fall failsafe Feature #2566: Handle NAM9 records for manual cell references Feature #3537: Shader-based water ripples diff --git a/apps/openmw/mwmechanics/activespells.cpp b/apps/openmw/mwmechanics/activespells.cpp index 2fb7df61c1..b624b104ed 100644 --- a/apps/openmw/mwmechanics/activespells.cpp +++ b/apps/openmw/mwmechanics/activespells.cpp @@ -52,6 +52,8 @@ namespace { for (const auto& enam : list.mList) { + if (enam.mData.mRange != ESM::RT_Self) + continue; ESM::ActiveEffect effect; effect.mEffectId = enam.mData.mEffectID; effect.mArg = MWMechanics::EffectKey(enam.mData).mArg; diff --git a/apps/openmw/mwmechanics/spellcasting.cpp b/apps/openmw/mwmechanics/spellcasting.cpp index a7e27c9ddd..dd63f8bffa 100644 --- a/apps/openmw/mwmechanics/spellcasting.cpp +++ b/apps/openmw/mwmechanics/spellcasting.cpp @@ -379,7 +379,10 @@ namespace MWMechanics mFlags = static_cast( ESM::ActiveSpells::Flag_Temporary | ESM::ActiveSpells::Flag_Stackable); - inflict(mCaster, potion->mEffects, ESM::RT_Self); + // Ignore range and don't apply area of effect + inflict(mCaster, potion->mEffects, ESM::RT_Self, true); + inflict(mCaster, potion->mEffects, ESM::RT_Touch, true); + inflict(mCaster, potion->mEffects, ESM::RT_Target, true); return true; }