mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 00:55:50 +00:00
Don't allow re-casting of bound equipment spells
This commit is contained in:
parent
3925f1fe81
commit
d617651307
@ -356,6 +356,14 @@ namespace MWMechanics
|
||||
|
||||
bool castByPlayer = (!caster.isEmpty() && caster == getPlayer());
|
||||
|
||||
ActiveSpells targetSpells;
|
||||
if (target.getClass().isActor())
|
||||
targetSpells = target.getClass().getCreatureStats(target).getActiveSpells();
|
||||
|
||||
bool canCastAnEffect = false; // For bound equipment.If this remains false
|
||||
// throughout the iteration of this spell's
|
||||
// effects, we display a "can't re-cast" message
|
||||
|
||||
for (std::vector<ESM::ENAMstruct>::const_iterator effectIt (effects.mList.begin());
|
||||
effectIt!=effects.mList.end(); ++effectIt)
|
||||
{
|
||||
@ -366,6 +374,16 @@ namespace MWMechanics
|
||||
MWBase::Environment::get().getWorld()->getStore().get<ESM::MagicEffect>().find (
|
||||
effectIt->mEffectID);
|
||||
|
||||
// Re-casting a bound equipment effect has no effect if the spell is still active
|
||||
if (magicEffect->mData.mFlags & ESM::MagicEffect::NonRecastable && targetSpells.isSpellActive(mId))
|
||||
{
|
||||
if (effectIt == (effects.mList.end() - 1) && !canCastAnEffect && castByPlayer)
|
||||
MWBase::Environment::get().getWindowManager()->messageBox("#{sMagicCannotRecast}");
|
||||
continue;
|
||||
}
|
||||
else
|
||||
canCastAnEffect = true;
|
||||
|
||||
if (!checkEffectTarget(effectIt->mEffectID, target, castByPlayer))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user