It didn't make sense to me that the player character doesn't know which items they pilfered, yet the guards did.
But, I don't think the original game had this either, so I don't know about submitting this for inclusion.
Screenshot:
Code:
Code: Select all
diff --git a/apps/openmw/mwbase/mechanicsmanager.hpp b/apps/openmw/mwbase/mechanicsmanager.hpp
index 1bdd8f8b5..b9026c139 100644
--- a/apps/openmw/mwbase/mechanicsmanager.hpp
+++ b/apps/openmw/mwbase/mechanicsmanager.hpp
@@ -250,6 +250,7 @@ namespace MWBase
/// <Owner, item count>
virtual std::vector<std::pair<std::string, int> > getStolenItemOwners(const std::string& itemid) = 0;
+ virtual bool isItemStolen(const std::string& itemid) = 0;
/// Has the player stolen this item from the given owner?
virtual bool isItemStolenFrom(const std::string& itemid, const MWWorld::Ptr& ptr) = 0;
diff --git a/apps/openmw/mwgui/tooltips.cpp b/apps/openmw/mwgui/tooltips.cpp
index f9775253a..77a4a5ea6 100644
--- a/apps/openmw/mwgui/tooltips.cpp
+++ b/apps/openmw/mwgui/tooltips.cpp
@@ -124,7 +124,7 @@ namespace MWGui
tooltipSize = createToolTip(info, checkOwned());
}
else
- tooltipSize = getToolTipViaPtr(mFocusObject.getRefData().getCount(), true);
+ tooltipSize = getToolTipViaPtr(mFocusObject.getRefData().getCount(), true, checkStolen());
MyGUI::IntPoint tooltipPosition = MyGUI::InputManager::getInstance().getMousePosition();
position(tooltipPosition, tooltipSize, viewSize);
@@ -202,7 +202,7 @@ namespace MWGui
std::pair<ItemModel::ModelIndex, ItemModel*> pair = *focus->getUserData<std::pair<ItemModel::ModelIndex, ItemModel*> >();
mFocusObject = pair.second->getItem(pair.first).mBase;
bool isAllowedToUse = pair.second->allowedToUseItems();
- tooltipSize = getToolTipViaPtr(pair.second->getItem(pair.first).mCount, false, !isAllowedToUse);
+ tooltipSize = getToolTipViaPtr(pair.second->getItem(pair.first).mCount, false, !isAllowedToUse || checkStolen());
}
else if (type == "ToolTipInfo")
{
@@ -216,7 +216,7 @@ namespace MWGui
mFocusObject = item;
if (!mFocusObject.isEmpty ())
- tooltipSize = getToolTipViaPtr(mFocusObject.getRefData().getCount(), false);
+ tooltipSize = getToolTipViaPtr(mFocusObject.getRefData().getCount(), checkStolen());
}
else if (type == "Spell")
{
@@ -387,6 +387,12 @@ namespace MWGui
return !mm->isAllowedToUse(ptr, mFocusObject, victim);
}
+ bool ToolTips::checkStolen()
+ {
+ MWBase::MechanicsManager* mm = MWBase::Environment::get().getMechanicsManager();
+ return mm->isItemStolen(mFocusObject.getCellRef().getRefId());
+ }
+
MyGUI::IntSize ToolTips::createToolTip(const MWGui::ToolTipInfo& info, bool isOwned)
{
mDynamicToolTipBox->setVisible(true);
diff --git a/apps/openmw/mwgui/tooltips.hpp b/apps/openmw/mwgui/tooltips.hpp
index 3b8e8b2cc..4f78f75ea 100644
--- a/apps/openmw/mwgui/tooltips.hpp
+++ b/apps/openmw/mwgui/tooltips.hpp
@@ -94,6 +94,8 @@ namespace MWGui
bool checkOwned();
/// Returns True if taking mFocusObject would be crime
+
+ bool checkStolen();
private:
MyGUI::Widget* mDynamicToolTipBox;
diff --git a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
index eead40537..68e64beba 100644
--- a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
+++ b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
@@ -1043,6 +1043,12 @@ namespace MWMechanics
}
}
+ bool MechanicsManager::isItemStolen(const std::string &itemid)
+ {
+ StolenItemsMap::const_iterator it = mStolenItems.find(Misc::StringUtils::lowerCase(itemid));
+ return it != mStolenItems.end();
+ }
+
bool MechanicsManager::isItemStolenFrom(const std::string &itemid, const MWWorld::Ptr& ptr)
{
StolenItemsMap::const_iterator it = mStolenItems.find(Misc::StringUtils::lowerCase(itemid));
diff --git a/apps/openmw/mwmechanics/mechanicsmanagerimp.hpp b/apps/openmw/mwmechanics/mechanicsmanagerimp.hpp
index 2dda376f5..93c3993a8 100644
--- a/apps/openmw/mwmechanics/mechanicsmanagerimp.hpp
+++ b/apps/openmw/mwmechanics/mechanicsmanagerimp.hpp
@@ -221,6 +221,8 @@ namespace MWMechanics
/// <Owner, item count>
virtual std::vector<std::pair<std::string, int> > getStolenItemOwners(const std::string& itemid) override;
+ virtual bool isItemStolen(const std::string& itemid) override;
+
/// Has the player stolen this item from the given owner?
virtual bool isItemStolenFrom(const std::string& itemid, const MWWorld::Ptr& ptr) override;