From fd89fa415a37c5680c3697135cdffe3ea1541675 Mon Sep 17 00:00:00 2001 From: Allofich Date: Sun, 3 Dec 2017 21:34:17 +0900 Subject: [PATCH] Do modifiers for dynamic stats before attributes (Fixes #4231) --- apps/openmw/mwmechanics/actors.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index e68a5d398..d53c4407b 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -697,6 +697,19 @@ namespace MWMechanics } } + // dynamic stats + for (int i = 0; i < 3; ++i) + { + DynamicStat stat = creatureStats.getDynamic(i); + stat.setCurrentModifier(effects.get(ESM::MagicEffect::FortifyHealth + i).getMagnitude() - + effects.get(ESM::MagicEffect::DrainHealth + i).getMagnitude(), + // Magicka can be decreased below zero due to a fortify effect wearing off + // Fatigue can be decreased below zero meaning the actor will be knocked out + i == 1 || i == 2); + + creatureStats.setDynamic(i, stat); + } + // attributes for(int i = 0;i < ESM::Attribute::Length;++i) { @@ -728,19 +741,6 @@ namespace MWMechanics } } - // dynamic stats - for(int i = 0;i < 3;++i) - { - DynamicStat stat = creatureStats.getDynamic(i); - stat.setCurrentModifier(effects.get(ESM::MagicEffect::FortifyHealth+i).getMagnitude() - - effects.get(ESM::MagicEffect::DrainHealth+i).getMagnitude(), - // Magicka can be decreased below zero due to a fortify effect wearing off - // Fatigue can be decreased below zero meaning the actor will be knocked out - i == 1 || i == 2); - - creatureStats.setDynamic(i, stat); - } - // AI setting modifiers int creature = !ptr.getClass().isNpc(); if (creature && ptr.get()->mBase->mData.mType == ESM::Creature::Humanoid)