1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-30 16:20:21 +00:00

Add/remove a WerewolfRobe when werewolf form is toggled

This commit is contained in:
Chris Robinson 2013-08-08 04:11:34 -07:00
parent 3cff7b1e42
commit 960ea3d96c

View File

@ -1871,10 +1871,38 @@ namespace MWWorld
npcStats.setWerewolf(werewolf);
MWWorld::InventoryStore& invStore = MWWorld::Class::get(actor).getInventoryStore(actor);
if (werewolf)
invStore.unequipAll(actor);
invStore.unequipAll(actor);
if (actor.getRefData().getHandle() == "player")
if(werewolf)
{
ManualRef ref(getStore(), "WerewolfRobe");
ref.getPtr().getRefData().setCount(1);
// Configure item's script variables
std::string script = Class::get(ref.getPtr()).getScript(ref.getPtr());
if(script != "")
{
const ESM::Script *esmscript = getStore().get<ESM::Script>().find(script);
ref.getPtr().getRefData().setLocals(*esmscript);
}
// Not sure this is right
InventoryStore &inv = Class::get(actor).getInventoryStore(actor);
inv.equip(InventoryStore::Slot_Robe, inv.add(ref.getPtr(), actor));
}
else
{
ContainerStore &store = Class::get(actor).getContainerStore(actor);
const std::string item = "WerewolfRobe";
for(ContainerStoreIterator iter(store.begin());iter != store.end();++iter)
{
if(Misc::StringUtils::ciEqual(iter->getCellRef().mRefID, item))
iter->getRefData().setCount(0);
}
}
if(actor.getRefData().getHandle() == "player")
{
// Update the GUI only when called on the player
MWBase::WindowManager* windowManager = MWBase::Environment::get().getWindowManager();