You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openmw-tes3coop/components/esm/loadnpc.cpp

59 lines
1.3 KiB
C++

#include "loadnpc.hpp"
namespace ESM
{
void NPC::load(ESMReader &esm, const std::string& id)
{
mId = id;
npdt52.gold = -10;
model = esm.getHNOString("MODL");
name = esm.getHNOString("FNAM");
race = esm.getHNString("RNAM");
cls = esm.getHNString("CNAM");
faction = esm.getHNString("ANAM");
head = esm.getHNString("BNAM");
hair = esm.getHNString("KNAM");
script = esm.getHNOString("SCRI");
esm.getSubNameIs("NPDT");
esm.getSubHeader();
if (esm.getSubSize() == 52)
esm.getExact(&npdt52, 52);
else if (esm.getSubSize() == 12)
esm.getExact(&npdt12, 12);
else
esm.fail("NPC_NPDT must be 12 or 52 bytes long");
esm.getHNT(flags, "FLAG");
inventory.load(esm);
spells.load(esm);
if (esm.isNextSub("AIDT"))
{
13 years ago
esm.getHExact(&mAiData, sizeof(mAiData));
mHasAI= true;
}
else
13 years ago
mHasAI = false;
13 years ago
while (esm.isNextSub("DODT") || esm.isNextSub("DNAM")) {
if (esm.retSubName() == 0x54444f44) { // DODT struct
Dest dodt;
13 years ago
esm.getHExact(&dodt.mPos, 24);
mTransport.push_back(dodt);
13 years ago
} else if (esm.retSubName() == 0x4d414e44) { // DNAM struct
13 years ago
mTransport.back().mCellName = esm.getHString();
13 years ago
}
}
13 years ago
mAiPackage.load(esm);
esm.skipRecord();
}
}