Add vanilla absorb attribute behavior option, on by default (Fixes #4135)

0.6.3
Capostrophic 7 years ago committed by Capostrophic
parent 9b8c56761b
commit 2d119e834a

@ -7,6 +7,7 @@
#include <boost/format.hpp> #include <boost/format.hpp>
#include <components/misc/rng.hpp> #include <components/misc/rng.hpp>
#include <components/settings/settings.hpp>
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/soundmanager.hpp" #include "../mwbase/soundmanager.hpp"
@ -567,9 +568,12 @@ namespace MWMechanics
ActiveSpells::ActiveEffect effect_ = effect; ActiveSpells::ActiveEffect effect_ = effect;
effect_.mMagnitude *= -1; effect_.mMagnitude *= -1;
absorbEffects.push_back(effect_); absorbEffects.push_back(effect_);
// Also make sure to set casterActorId = target, so that the effect on the caster gets purged when the target dies if (reflected && Settings::Manager::getBool("classic reflected absorb attribute behavior", "Game"))
caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true, target.getClass().getCreatureStats(target).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId()); absorbEffects, mSourceName, caster.getClass().getCreatureStats(caster).getActorId());
else
caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId());
} }
} }
} }

@ -97,6 +97,20 @@ and values greater than 500 will result in the player inflicting no damage.
This setting can be controlled in game with the Difficulty slider in the Prefs panel of the Options menu. This setting can be controlled in game with the Difficulty slider in the Prefs panel of the Options menu.
classic reflect absorb attribute behavior
-----------------------------------------
:Type: boolean
:Range: True/False
:Default: True
If this setting is true, "Absorb Attribute" spells which were reflected by the target are not "mirrored",
and the caster will absorb their own attribute resulting in no effect on both the caster and the target.
This makes the gameplay as a mage easier, but these spells become imbalanced.
This is how the original Morrowind behaves.
This setting can only be configured by editing the settings configuration file.
show effect duration show effect duration
-------------------- --------------------

@ -173,6 +173,9 @@ best attack = false
# Difficulty. Expressed as damage dealt and received. (e.g. -100 to 100). # Difficulty. Expressed as damage dealt and received. (e.g. -100 to 100).
difficulty = 0 difficulty = 0
# Replicate how reflected "absorb attribute" spells do not have any effect in Morrowind engine. The caster absorbs the attribute from themselves.
classic reflect absorb attribute behavior = true
# Show duration of magic effect and lights in the spells window. # Show duration of magic effect and lights in the spells window.
show effect duration = false show effect duration = false

Loading…
Cancel
Save