|
|
|
@ -480,7 +480,10 @@ namespace MWMechanics
|
|
|
|
|
ActiveSpells::ActiveEffect effect;
|
|
|
|
|
effect.mEffectId = effectIt->mEffectID;
|
|
|
|
|
effect.mArg = MWMechanics::EffectKey(*effectIt).mArg;
|
|
|
|
|
effect.mDuration = static_cast<float>(effectIt->mDuration);
|
|
|
|
|
if (!hasDuration)
|
|
|
|
|
effect.mDuration = 1.0f;
|
|
|
|
|
else
|
|
|
|
|
effect.mDuration = static_cast<float>(effectIt->mDuration);
|
|
|
|
|
effect.mMagnitude = magnitude;
|
|
|
|
|
|
|
|
|
|
targetEffects.add(MWMechanics::EffectKey(*effectIt), MWMechanics::EffectParam(effect.mMagnitude));
|
|
|
|
@ -610,36 +613,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 +637,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 +1123,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())
|
|
|
|
|