Add isInCell checks to PlaceAt and PlaceItem (Fixes #2873)

Avoids the game crashing when a script calls these functions before the player has been moved to the starting location.
openmw-38
scrawl 9 years ago
parent 34f48d63f3
commit a699b4128a

@ -458,6 +458,10 @@ namespace MWScript
runtime.pop();
MWWorld::Ptr player = MWMechanics::getPlayer();
if (!player.isInCell())
throw std::runtime_error("player not in a cell");
MWWorld::CellStore* store = NULL;
if (player.getCell()->isExterior())
{
@ -505,6 +509,9 @@ namespace MWScript
if (count<0)
throw std::runtime_error ("count must be non-negative");
if (!actor.isInCell())
throw std::runtime_error ("actor is not in a cell");
for (int i=0; i<count; ++i)
{
ESM::Position ipos = actor.getRefData().getPosition();

Loading…
Cancel
Save