|
|
|
@ -916,12 +916,54 @@ namespace MWMechanics
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void Actors::applyCureEffects(const MWWorld::Ptr& actor)
|
|
|
|
|
{
|
|
|
|
|
CreatureStats &creatureStats = actor.getClass().getCreatureStats(actor);
|
|
|
|
|
const MagicEffects &effects = creatureStats.getMagicEffects();
|
|
|
|
|
|
|
|
|
|
if (effects.get(ESM::MagicEffect::CurePoison).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getActiveSpells().purgeEffect(ESM::MagicEffect::Poison);
|
|
|
|
|
creatureStats.getSpells().purgeEffect(ESM::MagicEffect::Poison);
|
|
|
|
|
if (actor.getClass().hasInventoryStore(actor))
|
|
|
|
|
actor.getClass().getInventoryStore(actor).purgeEffect(ESM::MagicEffect::Poison);
|
|
|
|
|
}
|
|
|
|
|
else if (effects.get(ESM::MagicEffect::CureParalyzation).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getActiveSpells().purgeEffect(ESM::MagicEffect::Paralyze);
|
|
|
|
|
creatureStats.getSpells().purgeEffect(ESM::MagicEffect::Paralyze);
|
|
|
|
|
if (actor.getClass().hasInventoryStore(actor))
|
|
|
|
|
actor.getClass().getInventoryStore(actor).purgeEffect(ESM::MagicEffect::Paralyze);
|
|
|
|
|
}
|
|
|
|
|
else if (effects.get(ESM::MagicEffect::CureCommonDisease).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getSpells().purgeCommonDisease();
|
|
|
|
|
}
|
|
|
|
|
else if (effects.get(ESM::MagicEffect::CureBlightDisease).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getSpells().purgeBlightDisease();
|
|
|
|
|
}
|
|
|
|
|
else if (effects.get(ESM::MagicEffect::CureCorprusDisease).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getActiveSpells().purgeCorprusDisease();
|
|
|
|
|
creatureStats.getSpells().purgeCorprusDisease();
|
|
|
|
|
if (actor.getClass().hasInventoryStore(actor))
|
|
|
|
|
actor.getClass().getInventoryStore(actor).purgeEffect(ESM::MagicEffect::Corprus, true);
|
|
|
|
|
}
|
|
|
|
|
else if (effects.get(ESM::MagicEffect::RemoveCurse).getModifier() > 0)
|
|
|
|
|
{
|
|
|
|
|
creatureStats.getSpells().purgeCurses();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Actors::calculateCreatureStatModifiers (const MWWorld::Ptr& ptr, float duration)
|
|
|
|
|
{
|
|
|
|
|
CreatureStats &creatureStats = ptr.getClass().getCreatureStats(ptr);
|
|
|
|
|
const MagicEffects &effects = creatureStats.getMagicEffects();
|
|
|
|
|
bool godmode = ptr == getPlayer() && MWBase::Environment::get().getWorld()->getGodModeState();
|
|
|
|
|
|
|
|
|
|
applyCureEffects(ptr);
|
|
|
|
|
|
|
|
|
|
bool wasDead = creatureStats.isDead();
|
|
|
|
|
|
|
|
|
|
if (duration > 0)
|
|
|
|
|