1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-27 03:35:27 +00:00

Apply disease resistance manually as according to wiki

This commit is contained in:
scrawl 2013-11-19 16:52:26 +01:00
parent e8dcd74741
commit 654b7d9ba5

View File

@ -95,18 +95,37 @@ namespace MWMechanics
} }
// Try resisting // Try resisting
if (magnitudeMult > 0 && caster.getClass().isActor()) if (magnitudeMult > 0 && target.getClass().isActor())
{ {
const ESM::Spell *spell = const ESM::Spell *spell =
MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().search (mId); MWBase::Environment::get().getWorld()->getStore().get<ESM::Spell>().search (mId);
magnitudeMult = MWMechanics::getEffectMultiplier(effectIt->mEffectID, target, caster, spell);
if (magnitudeMult == 0) if (spell->mData.mType == ESM::Spell::ST_Disease || spell->mData.mType == ESM::Spell::ST_Blight)
{ {
// Fully resisted, show message float x = (spell->mData.mType == ESM::Spell::ST_Disease) ?
if (target.getRefData().getHandle() == "player") target.getClass().getCreatureStats(target).getMagicEffects().get(ESM::MagicEffect::ResistCommonDisease).mMagnitude
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicPCResisted}"); : target.getClass().getCreatureStats(target).getMagicEffects().get(ESM::MagicEffect::ResistBlightDisease).mMagnitude;
else
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicTargetResisted}"); int roll = std::rand()/ (static_cast<double> (RAND_MAX) + 1) * 100; // [0, 99]
if (roll <= x)
{
// Fully resisted, show message
if (target.getRefData().getHandle() == "player")
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicPCResisted}");
magnitudeMult = 0;
}
}
else
{
magnitudeMult = MWMechanics::getEffectMultiplier(effectIt->mEffectID, target, caster, spell);
if (magnitudeMult == 0)
{
// Fully resisted, show message
if (target.getRefData().getHandle() == "player")
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicPCResisted}");
else
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicTargetResisted}");
}
} }
} }
} }