From 00e6e855f1183b031870b8596ad865e2b1e227b8 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Fri, 14 Feb 2025 10:45:09 +0300 Subject: [PATCH 1/2] Don't add non-existent cell travel destinations (#8349) --- apps/openmw/mwgui/travelwindow.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index f95d00f235..c8e1e1a767 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,18 @@ 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 if (worldModel.findCell(cellname, false) == nullptr) + { + Log(Debug::Error) << "Failed to add travel destination: unknown cell (" << cellname << ")"; + continue; + } addDestination(ESM::RefId::stringRefId(cellname), dest.mPos, interior); } From 7cf74c570e974e399f7d74a9ad88e9ffdf90aca9 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Thu, 3 Jul 2025 07:31:25 +0300 Subject: [PATCH 2/2] Properly disable named exterior destination interior flag --- apps/openmw/mwgui/travelwindow.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index c8e1e1a767..c720767352 100644 --- a/apps/openmw/mwgui/travelwindow.cpp +++ b/apps/openmw/mwgui/travelwindow.cpp @@ -132,10 +132,15 @@ namespace MWGui cellname = MWBase::Environment::get().getWorld()->getCellName(&cell); interior = false; } - else if (worldModel.findCell(cellname, false) == nullptr) + else { - Log(Debug::Error) << "Failed to add travel destination: unknown cell (" << cellname << ")"; - continue; + 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); }