mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-09 12:25:17 -04:00
Merge pull request #1102 from Allofich/spells
Change several spell effects from instant to non-instant
This commit is contained in:
commit
2ed0277839
@ -449,7 +449,6 @@ namespace MWDialogue
|
|||||||
MWBase::Environment::get().getWindowManager()->removeGuiMode(MWGui::GM_Dialogue);
|
MWBase::Environment::get().getWindowManager()->removeGuiMode(MWGui::GM_Dialogue);
|
||||||
|
|
||||||
// Clamp permanent disposition change so that final disposition doesn't go below 0 (could happen with intimidate)
|
// Clamp permanent disposition change so that final disposition doesn't go below 0 (could happen with intimidate)
|
||||||
|
|
||||||
float curDisp = static_cast<float>(MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mActor, false));
|
float curDisp = static_cast<float>(MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(mActor, false));
|
||||||
if (curDisp + mPermanentDispositionChange < 0)
|
if (curDisp + mPermanentDispositionChange < 0)
|
||||||
mPermanentDispositionChange = -curDisp;
|
mPermanentDispositionChange = -curDisp;
|
||||||
|
@ -480,6 +480,9 @@ namespace MWMechanics
|
|||||||
ActiveSpells::ActiveEffect effect;
|
ActiveSpells::ActiveEffect effect;
|
||||||
effect.mEffectId = effectIt->mEffectID;
|
effect.mEffectId = effectIt->mEffectID;
|
||||||
effect.mArg = MWMechanics::EffectKey(*effectIt).mArg;
|
effect.mArg = MWMechanics::EffectKey(*effectIt).mArg;
|
||||||
|
if (!hasDuration)
|
||||||
|
effect.mDuration = 1.0f;
|
||||||
|
else
|
||||||
effect.mDuration = static_cast<float>(effectIt->mDuration);
|
effect.mDuration = static_cast<float>(effectIt->mDuration);
|
||||||
effect.mMagnitude = magnitude;
|
effect.mMagnitude = magnitude;
|
||||||
|
|
||||||
@ -610,36 +613,8 @@ namespace MWMechanics
|
|||||||
return true;
|
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);
|
MWRender::Animation* anim = MWBase::Environment::get().getWorld()->getAnimation(mCaster);
|
||||||
|
|
||||||
if (effectId == ESM::MagicEffect::DivineIntervention)
|
if (effectId == ESM::MagicEffect::DivineIntervention)
|
||||||
@ -662,7 +637,6 @@ namespace MWMechanics
|
|||||||
anim->addEffect("meshes\\" + fx->mModel, -1);
|
anim->addEffect("meshes\\" + fx->mModel, -1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (effectId == ESM::MagicEffect::Mark)
|
else if (effectId == ESM::MagicEffect::Mark)
|
||||||
{
|
{
|
||||||
MWBase::Environment::get().getWorld()->getPlayer().markPosition(
|
MWBase::Environment::get().getWorld()->getPlayer().markPosition(
|
||||||
@ -1149,6 +1123,27 @@ namespace MWMechanics
|
|||||||
break;
|
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())
|
if (receivedMagicDamage && actor == getPlayer())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user