1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-05 06:40:09 +00:00

Merge branch 'player_resurrection_spell_fix' into 'master'

Don't clear spells for a dead player, preventing resurrection problems

See merge request OpenMW/openmw!207
This commit is contained in:
psi29a 2020-07-10 12:00:24 +00:00
commit c3a44212c7

View File

@ -1966,13 +1966,17 @@ namespace MWMechanics
} }
else if (killResult == CharacterController::Result_DeathAnimJustFinished) else if (killResult == CharacterController::Result_DeathAnimJustFinished)
{ {
bool isPlayer = iter->first == getPlayer();
notifyDied(iter->first); notifyDied(iter->first);
// Reset magic effects and recalculate derived effects // Reset magic effects and recalculate derived effects
// One case where we need this is to make sure bound items are removed upon death // One case where we need this is to make sure bound items are removed upon death
stats.modifyMagicEffects(MWMechanics::MagicEffects()); stats.modifyMagicEffects(MWMechanics::MagicEffects());
stats.getActiveSpells().clear(); stats.getActiveSpells().clear();
if (!isPlayer)
stats.getSpells().clear(); stats.getSpells().clear();
// Make sure spell effects are removed // Make sure spell effects are removed
purgeSpellEffects(stats.getActorId()); purgeSpellEffects(stats.getActorId());
@ -1981,7 +1985,7 @@ namespace MWMechanics
if (iter->first.getClass().isNpc()) if (iter->first.getClass().isNpc())
calculateNpcStatModifiers(iter->first, 0); calculateNpcStatModifiers(iter->first, 0);
if( iter->first == getPlayer()) if (isPlayer)
{ {
//player's death animation is over //player's death animation is over
MWBase::Environment::get().getStateManager()->askLoadRecent(); MWBase::Environment::get().getStateManager()->askLoadRecent();