forked from mirror/openmw-tes3mp
scripts on items in containers added to script list on cell change
This commit is contained in:
parent
274ff530dc
commit
d4ca954d47
1 changed files with 33 additions and 0 deletions
|
@ -3,6 +3,10 @@
|
||||||
#include "esmstore.hpp"
|
#include "esmstore.hpp"
|
||||||
#include "cellstore.hpp"
|
#include "cellstore.hpp"
|
||||||
|
|
||||||
|
#include "class.hpp"
|
||||||
|
#include "containerstore.hpp"
|
||||||
|
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -19,6 +23,32 @@ namespace
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Adds scripts for items in containers (containers/npcs/creatures)
|
||||||
|
template<typename T>
|
||||||
|
void listCellScriptsCont (MWWorld::LocalScripts& localScripts,
|
||||||
|
MWWorld::CellRefList<T>& cellRefList, MWWorld::Ptr::CellStore *cell)
|
||||||
|
{
|
||||||
|
for (typename MWWorld::CellRefList<T>::List::iterator iter (
|
||||||
|
cellRefList.mList.begin());
|
||||||
|
iter!=cellRefList.mList.end(); ++iter)
|
||||||
|
{
|
||||||
|
|
||||||
|
MWWorld::Ptr containerPtr (&*iter, cell);
|
||||||
|
|
||||||
|
MWWorld::ContainerStore& container = MWWorld::Class::get(containerPtr).getContainerStore(containerPtr);
|
||||||
|
for(MWWorld::ContainerStoreIterator it3 = container.begin(); it3 != container.end(); ++it3)
|
||||||
|
{
|
||||||
|
std::string script = MWWorld::Class::get(*it3).getScript(*it3);
|
||||||
|
if(script != "")
|
||||||
|
{
|
||||||
|
MWWorld::Ptr item = *it3;
|
||||||
|
item.mCell = cell;
|
||||||
|
localScripts.add (script, item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MWWorld::LocalScripts::LocalScripts (const MWWorld::ESMStore& store) : mStore (store) {}
|
MWWorld::LocalScripts::LocalScripts (const MWWorld::ESMStore& store) : mStore (store) {}
|
||||||
|
@ -78,13 +108,16 @@ void MWWorld::LocalScripts::addCell (Ptr::CellStore *cell)
|
||||||
listCellScripts (*this, cell->mBooks, cell);
|
listCellScripts (*this, cell->mBooks, cell);
|
||||||
listCellScripts (*this, cell->mClothes, cell);
|
listCellScripts (*this, cell->mClothes, cell);
|
||||||
listCellScripts (*this, cell->mContainers, cell);
|
listCellScripts (*this, cell->mContainers, cell);
|
||||||
|
listCellScriptsCont (*this, cell->mContainers, cell);
|
||||||
listCellScripts (*this, cell->mCreatures, cell);
|
listCellScripts (*this, cell->mCreatures, cell);
|
||||||
|
listCellScriptsCont (*this, cell->mCreatures, cell);
|
||||||
listCellScripts (*this, cell->mDoors, cell);
|
listCellScripts (*this, cell->mDoors, cell);
|
||||||
listCellScripts (*this, cell->mIngreds, cell);
|
listCellScripts (*this, cell->mIngreds, cell);
|
||||||
listCellScripts (*this, cell->mLights, cell);
|
listCellScripts (*this, cell->mLights, cell);
|
||||||
listCellScripts (*this, cell->mLockpicks, cell);
|
listCellScripts (*this, cell->mLockpicks, cell);
|
||||||
listCellScripts (*this, cell->mMiscItems, cell);
|
listCellScripts (*this, cell->mMiscItems, cell);
|
||||||
listCellScripts (*this, cell->mNpcs, cell);
|
listCellScripts (*this, cell->mNpcs, cell);
|
||||||
|
listCellScriptsCont (*this, cell->mNpcs, cell);
|
||||||
listCellScripts (*this, cell->mProbes, cell);
|
listCellScripts (*this, cell->mProbes, cell);
|
||||||
listCellScripts (*this, cell->mRepairs, cell);
|
listCellScripts (*this, cell->mRepairs, cell);
|
||||||
listCellScripts (*this, cell->mWeapons, cell);
|
listCellScripts (*this, cell->mWeapons, cell);
|
||||||
|
|
Loading…
Reference in a new issue