|
|
|
@ -168,7 +168,7 @@ std::string Cell::getDescription() const
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool& deleted)
|
|
|
|
|
bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool& deleted, bool ignoreMoves)
|
|
|
|
|
{
|
|
|
|
|
// TODO: Try and document reference numbering, I don't think this has been done anywhere else.
|
|
|
|
|
if (!esm.hasMoreSubs())
|
|
|
|
@ -176,10 +176,20 @@ bool Cell::getNextRef(ESMReader &esm, CellRef &ref, bool& deleted)
|
|
|
|
|
|
|
|
|
|
// NOTE: We should not need this check. It is a safety check until we have checked
|
|
|
|
|
// more plugins, and how they treat these moved references.
|
|
|
|
|
if (esm.isNextSub("MVRF")) {
|
|
|
|
|
// skip rest of cell record (moved references), they are handled elsewhere
|
|
|
|
|
esm.skipRecord(); // skip MVRF, CNDT
|
|
|
|
|
return false;
|
|
|
|
|
if (esm.isNextSub("MVRF"))
|
|
|
|
|
{
|
|
|
|
|
if (ignoreMoves)
|
|
|
|
|
{
|
|
|
|
|
MovedCellRef mref;
|
|
|
|
|
esm.getHT (mref.mRefNum.mIndex);
|
|
|
|
|
esm.getHNOT (mref.mTarget, "CNDT");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// skip rest of cell record (moved references), they are handled elsewhere
|
|
|
|
|
esm.skipRecord(); // skip MVRF, CNDT
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ref.load (esm);
|
|
|
|
|