mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 07:45:39 +00:00
Merge branch 'thirstytherana' into 'master'
Prevent spell priority skyrocketing in useless cases Closes #8102 See merge request OpenMW/openmw!4310
This commit is contained in:
commit
c8c09b1905
1 changed files with 4 additions and 5 deletions
|
@ -440,12 +440,12 @@ namespace MWMechanics
|
|||
// NB: this currently assumes the hardcoded magic effect flags are used
|
||||
const float magnitude = (effect.mMagnMin + effect.mMagnMax) / 2.f;
|
||||
const float toHeal = magnitude * std::max(1, effect.mDuration);
|
||||
const float damage = current.getModified() - current.getCurrent();
|
||||
const float damage = std::max(current.getModified() - current.getCurrent(), 0.f);
|
||||
float priority = 0.f;
|
||||
if (effect.mEffectID == ESM::MagicEffect::RestoreHealth)
|
||||
priority = 4.f;
|
||||
else if (effect.mEffectID == ESM::MagicEffect::RestoreMagicka)
|
||||
priority = std::max(0.1f, getRestoreMagickaPriority(actor));
|
||||
priority = getRestoreMagickaPriority(actor);
|
||||
else if (effect.mEffectID == ESM::MagicEffect::RestoreFatigue)
|
||||
priority = 2.f;
|
||||
float overheal = 0.f;
|
||||
|
@ -456,9 +456,8 @@ namespace MWMechanics
|
|||
heal = damage;
|
||||
}
|
||||
|
||||
priority = (std::pow(priority + heal / current.getModified(), damage * 4.f / current.getModified())
|
||||
- priority - overheal / current.getModified())
|
||||
/ priority;
|
||||
priority = (priority - 1.f) / 2.f * std::pow((damage / current.getModified() + 0.6f), priority * 2)
|
||||
+ priority * (heal - 2.f * overheal) / current.getModified() - 0.5f;
|
||||
rating = priority;
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue