mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-13 23:39:41 +00:00
Last fixes.
This commit is contained in:
parent
147ee0ace3
commit
bf0383fe05
3 changed files with 48 additions and 12 deletions
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#include "../world/universalid.hpp"
|
#include "../world/universalid.hpp"
|
||||||
|
|
||||||
CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(const CSMWorld::RefIdData& referenceable, const CSMWorld::IdCollection<ESM::ace >& races, const CSMWorld::IdCollection<ESM::Class>& classes) :
|
CSMTools::ReferenceableCheckStage::ReferenceableCheckStage(const CSMWorld::RefIdData& referenceable, const CSMWorld::IdCollection<ESM::Race >& races, const CSMWorld::IdCollection<ESM::Class>& classes) :
|
||||||
mReferencables(referenceable),
|
mReferencables(referenceable),
|
||||||
mClasses(classes),
|
mClasses(classes),
|
||||||
mRaces(races),
|
mRaces(races),
|
||||||
|
@ -146,6 +146,12 @@ void CSMTools::ReferenceableCheckStage::perform(int stage, std::vector< std::str
|
||||||
}
|
}
|
||||||
|
|
||||||
stage -= mMiscellaneousSize;
|
stage -= mMiscellaneousSize;
|
||||||
|
|
||||||
|
if (stage < mNPCsSize)
|
||||||
|
{
|
||||||
|
npcCheck(stage, mReferencables.getNPCs(), messages);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int CSMTools::ReferenceableCheckStage::setup()
|
int CSMTools::ReferenceableCheckStage::setup()
|
||||||
|
@ -837,7 +843,7 @@ void CSMTools::ReferenceableCheckStage::npcCheck(int stage, const CSMWorld::RefI
|
||||||
|
|
||||||
if (NPC.mNpdtType == 12) //12 = autocalculated
|
if (NPC.mNpdtType == 12) //12 = autocalculated
|
||||||
{
|
{
|
||||||
if (NPC.mFlags ^ 0x0008) //0x0008 = autocalculated flag
|
if (! NPC.mFlags & 0x0008) //0x0008 = autocalculated flag
|
||||||
{
|
{
|
||||||
messages.push_back(id.toString() + "|" + NPC.mId + " mNpdtType and flags mismatch!"); //should not happend?
|
messages.push_back(id.toString() + "|" + NPC.mId + " mNpdtType and flags mismatch!"); //should not happend?
|
||||||
return;
|
return;
|
||||||
|
@ -851,11 +857,6 @@ void CSMTools::ReferenceableCheckStage::npcCheck(int stage, const CSMWorld::RefI
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (NPC.mNpdt52.mHealth < 0)
|
|
||||||
{
|
|
||||||
messages.push_back(id.toString() + "|" + NPC.mId + " health has negative value");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NPC.mNpdt52.mMana < 0)
|
if (NPC.mNpdt52.mMana < 0)
|
||||||
{
|
{
|
||||||
messages.push_back(id.toString() + "|" + NPC.mId + " mana has negative value");
|
messages.push_back(id.toString() + "|" + NPC.mId + " mana has negative value");
|
||||||
|
@ -927,11 +928,46 @@ void CSMTools::ReferenceableCheckStage::npcCheck(int stage, const CSMWorld::RefI
|
||||||
{
|
{
|
||||||
messages.push_back(id.toString() + "|" + NPC.mId + " has any empty class");
|
messages.push_back(id.toString() + "|" + NPC.mId + " has any empty class");
|
||||||
}
|
}
|
||||||
|
else //checking if there is such class
|
||||||
|
{
|
||||||
|
bool nosuchclass(true);
|
||||||
|
|
||||||
|
for (int i = 0; i < mClasses.getSize(); ++i)
|
||||||
|
{
|
||||||
|
if (mClasses.getRecord(i).get().mName == NPC.mClass)
|
||||||
|
{
|
||||||
|
nosuchclass = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nosuchclass)
|
||||||
|
{
|
||||||
|
messages.push_back(id.toString() + "|" + NPC.mId + " has invalid class");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (NPC.mRace.empty())
|
if (NPC.mRace.empty())
|
||||||
{
|
{
|
||||||
messages.push_back(id.toString() + "|" + NPC.mId + " has any empty race");
|
messages.push_back(id.toString() + "|" + NPC.mId + " has any empty race");
|
||||||
}
|
}
|
||||||
|
else //checking if there is a such race
|
||||||
|
{
|
||||||
|
bool nosuchrace(true);
|
||||||
|
|
||||||
|
for (int i = 0; i < mRaces.getSize(); ++i)
|
||||||
|
{
|
||||||
|
if (mRaces.getRecord(i).get().mName == NPC.mRace)
|
||||||
|
{
|
||||||
|
nosuchrace = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nosuchrace)
|
||||||
|
{
|
||||||
|
messages.push_back(id.toString() + "|" + NPC.mId + " has invalid race");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//TODO: reputation, Disposition, rank, everything else
|
//TODO: reputation, Disposition, rank, everything else
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,8 @@ namespace CSMTools
|
||||||
void npcCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::NPC>& records, std::vector<std::string>& messages);
|
void npcCheck(int stage, const CSMWorld::RefIdDataContainer<ESM::NPC>& records, std::vector<std::string>& messages);
|
||||||
|
|
||||||
const CSMWorld::RefIdData& mReferencables;
|
const CSMWorld::RefIdData& mReferencables;
|
||||||
const CSMWorld::IdCollection<ESM::Race> mRaces;
|
const CSMWorld::IdCollection<ESM::Race>& mRaces;
|
||||||
const CSMWorld::IdCollection<ESM::Class> mClasses;
|
const CSMWorld::IdCollection<ESM::Class>& mClasses;
|
||||||
|
|
||||||
//SIZES OF CONCRETE TYPES
|
//SIZES OF CONCRETE TYPES
|
||||||
const int mBooksSize;
|
const int mBooksSize;
|
||||||
|
|
|
@ -76,7 +76,7 @@ CSMDoc::Operation *CSMTools::Tools::getVerifier()
|
||||||
|
|
||||||
mVerifier->appendStage (new SpellCheckStage (mData.getSpells()));
|
mVerifier->appendStage (new SpellCheckStage (mData.getSpells()));
|
||||||
|
|
||||||
mVerifier->appendStage (new ReferenceableCheckStage (mData.getReferenceables().getDataSet()), mData.getRaces(), mData.getClasses());
|
mVerifier->appendStage (new ReferenceableCheckStage (mData.getReferenceables().getDataSet(), mData.getRaces(), mData.getClasses()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return mVerifier;
|
return mVerifier;
|
||||||
|
|
Loading…
Reference in a new issue