Skip to content

Commit

Permalink
Merge pull request OpenMW#1649
Browse files Browse the repository at this point in the history
  • Loading branch information
scrawl committed Apr 2, 2018
2 parents cd9f767 + 2d119e8 commit c610b8a
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 3 deletions.
10 changes: 7 additions & 3 deletions apps/openmw/mwmechanics/spellcasting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <boost/format.hpp>

#include <components/misc/rng.hpp>
#include <components/settings/settings.hpp>

#include "../mwbase/windowmanager.hpp"
#include "../mwbase/soundmanager.hpp"
Expand Down Expand Up @@ -569,9 +570,12 @@ namespace MWMechanics
ActiveSpells::ActiveEffect effect_ = effect;
effect_.mMagnitude *= -1;
absorbEffects.push_back(effect_);
// Also make sure to set casterActorId = target, so that the effect on the caster gets purged when the target dies
caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId());
if (reflected && Settings::Manager::getBool("classic reflected absorb attribute behavior", "Game"))
target.getClass().getCreatureStats(target).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, caster.getClass().getCreatureStats(caster).getActorId());
else
caster.getClass().getCreatureStats(caster).getActiveSpells().addSpell("", true,
absorbEffects, mSourceName, target.getClass().getCreatureStats(target).getActorId());
}
}
}
Expand Down
14 changes: 14 additions & 0 deletions docs/source/reference/modding/settings/game.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,20 @@ and values above 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.

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
--------------------

Expand Down
3 changes: 3 additions & 0 deletions files/settings-default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,9 @@ best attack = false
# Difficulty. Expressed as damage dealt and received. (e.g. -100 to 100).
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 effect duration = false

Expand Down

0 comments on commit c610b8a

Please sign in to comment.