mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 08:15:54 +00:00
Merge pull request #1102 from Allofich/spells
Change several spell effects from instant to non-instant
This commit is contained in:
commit
2ed0277839
2 changed files with 27 additions and 33 deletions
|
@ -448,8 +448,7 @@ namespace MWDialogue
|
|||
{
|
||||
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));
|
||||
if (curDisp + mPermanentDispositionChange < 0)
|
||||
mPermanentDispositionChange = -curDisp;
|
||||
|
|
|
@ -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())
|
||||
|
|
Loading…
Reference in a new issue