mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-20 09:23:52 +00:00
Merge pull request #2611 from Capostrophic/effect
[Regression] Make sure instant FX abilities get detected when they're supposed to
This commit is contained in:
commit
407a737fe4
1 changed files with 12 additions and 11 deletions
|
@ -465,16 +465,6 @@ namespace MWScript
|
||||||
{
|
{
|
||||||
// Apply looping particles immediately for constant effects
|
// Apply looping particles immediately for constant effects
|
||||||
MWBase::Environment::get().getWorld()->applyLoopingParticles(ptr);
|
MWBase::Environment::get().getWorld()->applyLoopingParticles(ptr);
|
||||||
|
|
||||||
// The spell may have an instant effect which must be handled immediately.
|
|
||||||
for (const auto& effect : creatureStats.getSpells().getMagicEffects())
|
|
||||||
{
|
|
||||||
if (effect.second.getMagnitude() <= 0)
|
|
||||||
continue;
|
|
||||||
MWMechanics::CastSpell cast(ptr, ptr);
|
|
||||||
if (cast.applyInstantEffect(ptr, ptr, effect.first, effect.second.getMagnitude()))
|
|
||||||
creatureStats.getSpells().purgeEffect(effect.first.mId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -491,7 +481,18 @@ namespace MWScript
|
||||||
std::string id = runtime.getStringLiteral (runtime[0].mInteger);
|
std::string id = runtime.getStringLiteral (runtime[0].mInteger);
|
||||||
runtime.pop();
|
runtime.pop();
|
||||||
|
|
||||||
ptr.getClass().getCreatureStats (ptr).getSpells().remove (id);
|
MWMechanics::CreatureStats& creatureStats = ptr.getClass().getCreatureStats(ptr);
|
||||||
|
// The spell may have an instant effect which must be handled before the spell's removal.
|
||||||
|
for (const auto& effect : creatureStats.getSpells().getMagicEffects())
|
||||||
|
{
|
||||||
|
if (effect.second.getMagnitude() <= 0)
|
||||||
|
continue;
|
||||||
|
MWMechanics::CastSpell cast(ptr, ptr);
|
||||||
|
if (cast.applyInstantEffect(ptr, ptr, effect.first, effect.second.getMagnitude()))
|
||||||
|
creatureStats.getSpells().purgeEffect(effect.first.mId);
|
||||||
|
}
|
||||||
|
|
||||||
|
creatureStats.getSpells().remove (id);
|
||||||
|
|
||||||
MWBase::WindowManager *wm = MWBase::Environment::get().getWindowManager();
|
MWBase::WindowManager *wm = MWBase::Environment::get().getWindowManager();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue