mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 18:45:38 +00:00
Merge branch 'container-regressions' into 'master'
Fix container regressions See merge request OpenMW/openmw!346 (cherry picked from commit b0aee6f83d4cddb0116284b197913f9687dd9cee) 95e7a22d fix container regressions
This commit is contained in:
parent
de7bafcbbd
commit
df178ed97c
2 changed files with 12 additions and 10 deletions
|
@ -230,36 +230,38 @@ namespace MWGui
|
|||
{
|
||||
MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton);
|
||||
|
||||
// Copy mPtr because onTakeAllButtonClicked closes the window which resets the reference
|
||||
MWWorld::Ptr ptr = mPtr;
|
||||
onTakeAllButtonClicked(mTakeButton);
|
||||
|
||||
if (mPtr.getClass().isPersistent(mPtr))
|
||||
if (ptr.getClass().isPersistent(ptr))
|
||||
MWBase::Environment::get().getWindowManager()->messageBox("#{sDisposeCorpseFail}");
|
||||
else
|
||||
{
|
||||
MWMechanics::CreatureStats& creatureStats = mPtr.getClass().getCreatureStats(mPtr);
|
||||
MWMechanics::CreatureStats& creatureStats = ptr.getClass().getCreatureStats(ptr);
|
||||
|
||||
// If we dispose corpse before end of death animation, we should update death counter counter manually.
|
||||
// Also we should run actor's script - it may react on actor's death.
|
||||
if (creatureStats.isDead() && !creatureStats.isDeathAnimationFinished())
|
||||
{
|
||||
creatureStats.setDeathAnimationFinished(true);
|
||||
MWBase::Environment::get().getMechanicsManager()->notifyDied(mPtr);
|
||||
MWBase::Environment::get().getMechanicsManager()->notifyDied(ptr);
|
||||
|
||||
const std::string script = mPtr.getClass().getScript(mPtr);
|
||||
const std::string script = ptr.getClass().getScript(ptr);
|
||||
if (!script.empty() && MWBase::Environment::get().getWorld()->getScriptsEnabled())
|
||||
{
|
||||
MWScript::InterpreterContext interpreterContext (&mPtr.getRefData().getLocals(), mPtr);
|
||||
MWScript::InterpreterContext interpreterContext (&ptr.getRefData().getLocals(), ptr);
|
||||
MWBase::Environment::get().getScriptManager()->run (script, interpreterContext);
|
||||
}
|
||||
|
||||
// Clean up summoned creatures as well
|
||||
std::map<ESM::SummonKey, int>& creatureMap = creatureStats.getSummonedCreatureMap();
|
||||
for (const auto& creature : creatureMap)
|
||||
MWBase::Environment::get().getMechanicsManager()->cleanupSummonedCreature(mPtr, creature.second);
|
||||
MWBase::Environment::get().getMechanicsManager()->cleanupSummonedCreature(ptr, creature.second);
|
||||
creatureMap.clear();
|
||||
}
|
||||
|
||||
MWBase::Environment::get().getWorld()->deleteObject(mPtr);
|
||||
MWBase::Environment::get().getWorld()->deleteObject(ptr);
|
||||
}
|
||||
|
||||
mPtr = MWWorld::Ptr();
|
||||
|
|
|
@ -30,17 +30,17 @@ namespace Misc
|
|||
|
||||
float Rng::rollProbability(Seed& seed)
|
||||
{
|
||||
return std::uniform_real_distribution<float>(0, 1 - std::numeric_limits<float>::epsilon())(sSeed.mGenerator);
|
||||
return std::uniform_real_distribution<float>(0, 1 - std::numeric_limits<float>::epsilon())(seed.mGenerator);
|
||||
}
|
||||
|
||||
float Rng::rollClosedProbability(Seed& seed)
|
||||
{
|
||||
return std::uniform_real_distribution<float>(0, 1)(sSeed.mGenerator);
|
||||
return std::uniform_real_distribution<float>(0, 1)(seed.mGenerator);
|
||||
}
|
||||
|
||||
int Rng::rollDice(int max, Seed& seed)
|
||||
{
|
||||
return max > 0 ? std::uniform_int_distribution<int>(0, max - 1)(sSeed.mGenerator) : 0;
|
||||
return max > 0 ? std::uniform_int_distribution<int>(0, max - 1)(seed.mGenerator) : 0;
|
||||
}
|
||||
|
||||
unsigned int Rng::generateDefaultSeed()
|
||||
|
|
Loading…
Reference in a new issue