diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index e897ca5fa5..e001cf9b43 100644 --- a/apps/openmw/mwgui/travelwindow.cpp +++ b/apps/openmw/mwgui/travelwindow.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -124,12 +125,23 @@ namespace MWGui bool interior = true; const ESM::ExteriorCellLocation cellIndex = ESM::positionToExteriorCellLocation(dest.mPos.pos[0], dest.mPos.pos[1]); + const MWWorld::WorldModel& worldModel = *MWBase::Environment::get().getWorldModel(); if (cellname.empty()) { - MWWorld::CellStore& cell = MWBase::Environment::get().getWorldModel()->getExterior(cellIndex); + MWWorld::CellStore& cell = worldModel.getExterior(cellIndex); cellname = MWBase::Environment::get().getWorld()->getCellName(&cell); interior = false; } + else + { + const MWWorld::CellStore* destCell = worldModel.findCell(cellname, false); + if (destCell == nullptr) + { + Log(Debug::Error) << "Failed to add travel destination: unknown cell (" << cellname << ")"; + continue; + } + interior = !destCell->getCell()->isExterior(); + } addDestination(ESM::RefId::stringRefId(cellname), dest.mPos, interior); }