diff --git a/apps/openmw/mwgui/inventoryitemmodel.cpp b/apps/openmw/mwgui/inventoryitemmodel.cpp index 30269cd9c7..ec3bb3b301 100644 --- a/apps/openmw/mwgui/inventoryitemmodel.cpp +++ b/apps/openmw/mwgui/inventoryitemmodel.cpp @@ -75,7 +75,14 @@ void InventoryItemModel::update() for (MWWorld::ContainerStoreIterator it = store.begin(); it != store.end(); ++it) { - ItemStack newItem (*it, this, it->getRefData().getCount()); + MWWorld::Ptr item = *it; + // NOTE: Don't show WerewolfRobe objects in the inventory, or allow them to be taken. + // Vanilla likely uses a hack like this since there's no other way to prevent it from + // being shown or taken. + if(item.getCellRef().mRefID == "WerewolfRobe") + continue; + + ItemStack newItem (item, this, item.getRefData().getCount()); if (mActor.getTypeName() == typeid(ESM::NPC).name()) { diff --git a/apps/openmw/mwgui/inventorywindow.cpp b/apps/openmw/mwgui/inventorywindow.cpp index 3b848f2e06..4aa8fae02e 100644 --- a/apps/openmw/mwgui/inventorywindow.cpp +++ b/apps/openmw/mwgui/inventorywindow.cpp @@ -356,12 +356,19 @@ namespace MWGui if (slot == -1) return MWWorld::Ptr(); - MWWorld::Ptr player = mPtr; - MWWorld::InventoryStore& invStore = MWWorld::Class::get(player).getInventoryStore(player); - if (invStore.getSlot(slot) != invStore.end()) - return *invStore.getSlot (slot); - else - return MWWorld::Ptr(); + MWWorld::InventoryStore& invStore = MWWorld::Class::get(mPtr).getInventoryStore(mPtr); + if(invStore.getSlot(slot) != invStore.end()) + { + MWWorld::Ptr item = *invStore.getSlot(slot); + // NOTE: Don't allow users to select WerewolfRobe objects in the inventory. Vanilla + // likely uses a hack like this since there's no other way to prevent it from being + // taken. + if(item.getCellRef().mRefID == "WerewolfRobe") + return MWWorld::Ptr(); + return item; + } + + return MWWorld::Ptr(); } void InventoryWindow::unequipItem(const MWWorld::Ptr& item)