forked from teamnwah/openmw-tes3coop
Change several instant effects to be non-instant (Fixes #2054)
This commit is contained in:
parent
db09858f59
commit
675bd09462
1 changed files with 23 additions and 32 deletions
|
@ -463,8 +463,7 @@ namespace MWMechanics
|
|||
}
|
||||
else // target.getClass().isActor() == true
|
||||
{
|
||||
bool hasDuration = !(magicEffect->mData.mFlags & ESM::MagicEffect::NoDuration);
|
||||
if (hasDuration && effectIt->mDuration == 0)
|
||||
if (effectIt->mDuration == 0)
|
||||
{
|
||||
// duration 0 means apply full magnitude instantly
|
||||
bool wasDead = target.getClass().getCreatureStats(target).isDead();
|
||||
|
@ -610,36 +609,8 @@ namespace MWMechanics
|
|||
return true;
|
||||
}
|
||||
}
|
||||
else if (target.getClass().isActor())
|
||||
else if (target.getClass().isActor() && target == getPlayer())
|
||||
{
|
||||
switch (effectId)
|
||||
{
|
||||
case ESM::MagicEffect::CurePoison:
|
||||
target.getClass().getCreatureStats(target).getActiveSpells().purgeEffect(ESM::MagicEffect::Poison);
|
||||
return true;
|
||||
case ESM::MagicEffect::CureParalyzation:
|
||||
target.getClass().getCreatureStats(target).getActiveSpells().purgeEffect(ESM::MagicEffect::Paralyze);
|
||||
return true;
|
||||
case ESM::MagicEffect::CureCommonDisease:
|
||||
target.getClass().getCreatureStats(target).getSpells().purgeCommonDisease();
|
||||
return true;
|
||||
case ESM::MagicEffect::CureBlightDisease:
|
||||
target.getClass().getCreatureStats(target).getSpells().purgeBlightDisease();
|
||||
return true;
|
||||
case ESM::MagicEffect::CureCorprusDisease:
|
||||
target.getClass().getCreatureStats(target).getSpells().purgeCorprusDisease();
|
||||
return true;
|
||||
case ESM::MagicEffect::Dispel:
|
||||
target.getClass().getCreatureStats(target).getActiveSpells().purgeAll(magnitude);
|
||||
return true;
|
||||
case ESM::MagicEffect::RemoveCurse:
|
||||
target.getClass().getCreatureStats(target).getSpells().purgeCurses();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (target != getPlayer())
|
||||
return false;
|
||||
|
||||
MWRender::Animation* anim = MWBase::Environment::get().getWorld()->getAnimation(mCaster);
|
||||
|
||||
if (effectId == ESM::MagicEffect::DivineIntervention)
|
||||
|
@ -662,7 +633,6 @@ namespace MWMechanics
|
|||
anim->addEffect("meshes\\" + fx->mModel, -1);
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (effectId == ESM::MagicEffect::Mark)
|
||||
{
|
||||
MWBase::Environment::get().getWorld()->getPlayer().markPosition(
|
||||
|
@ -1149,6 +1119,27 @@ namespace MWMechanics
|
|||
break;
|
||||
}
|
||||
|
||||
case ESM::MagicEffect::CurePoison:
|
||||
actor.getClass().getCreatureStats(actor).getActiveSpells().purgeEffect(ESM::MagicEffect::Poison);
|
||||
break;
|
||||
case ESM::MagicEffect::CureParalyzation:
|
||||
actor.getClass().getCreatureStats(actor).getActiveSpells().purgeEffect(ESM::MagicEffect::Paralyze);
|
||||
break;
|
||||
case ESM::MagicEffect::CureCommonDisease:
|
||||
actor.getClass().getCreatureStats(actor).getSpells().purgeCommonDisease();
|
||||
break;
|
||||
case ESM::MagicEffect::CureBlightDisease:
|
||||
actor.getClass().getCreatureStats(actor).getSpells().purgeBlightDisease();
|
||||
break;
|
||||
case ESM::MagicEffect::CureCorprusDisease:
|
||||
actor.getClass().getCreatureStats(actor).getSpells().purgeCorprusDisease();
|
||||
break;
|
||||
case ESM::MagicEffect::Dispel:
|
||||
actor.getClass().getCreatureStats(actor).getActiveSpells().purgeAll(magnitude);
|
||||
break;
|
||||
case ESM::MagicEffect::RemoveCurse:
|
||||
actor.getClass().getCreatureStats(actor).getSpells().purgeCurses();
|
||||
break;
|
||||
}
|
||||
|
||||
if (receivedMagicDamage && actor == getPlayer())
|
||||
|
|
Loading…
Reference in a new issue