From 6733a1541efb66ec561c9e619969cb07e912f5d0 Mon Sep 17 00:00:00 2001 From: Jeffrey Haines Date: Sat, 19 Apr 2014 19:03:31 -0400 Subject: [PATCH 1/2] Fixes to Crime System Victimless crimes were removed because victims may not exist in the case of stealing items. Is class now uses case insensitive comparison. Fixed issue with confiscation of stolen items. --- apps/openmw/mwclass/npc.cpp | 2 +- apps/openmw/mwmechanics/mechanicsmanagerimp.cpp | 4 ++-- apps/openmw/mwscript/miscextensions.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwclass/npc.cpp b/apps/openmw/mwclass/npc.cpp index 5a3ff10de..e43bfe40d 100644 --- a/apps/openmw/mwclass/npc.cpp +++ b/apps/openmw/mwclass/npc.cpp @@ -1305,7 +1305,7 @@ namespace MWClass bool Npc::isClass(const MWWorld::Ptr& ptr, const std::string &className) const { - return ptr.get()->mBase->mClass == className; + return Misc::StringUtils::ciEqual(ptr.get()->mBase->mClass, className); } const ESM::GameSetting *Npc::fMinWalkSpeed; diff --git a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp index d162e1037..147f6d03f 100644 --- a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp @@ -805,8 +805,8 @@ namespace MWMechanics // NOTE: int arg can be from itemTaken() so DON'T modify it, since it is // passed to reportCrime later on in this function. - // Only player can commit crime and no victimless crimes - if (ptr.getRefData().getHandle() != "player" || victim.isEmpty()) + // Only player can commit crime + if (ptr.getRefData().getHandle() != "player") return false; const MWWorld::ESMStore& esmStore = MWBase::Environment::get().getWorld()->getStore(); diff --git a/apps/openmw/mwscript/miscextensions.cpp b/apps/openmw/mwscript/miscextensions.cpp index aa554adc3..d8ba3ea22 100644 --- a/apps/openmw/mwscript/miscextensions.cpp +++ b/apps/openmw/mwscript/miscextensions.cpp @@ -814,6 +814,7 @@ namespace MWScript { MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr(); player.getClass().getNpcStats(player).setBounty(0); + MWBase::Environment::get().getWorld()->confiscateStolenItems(player); MWBase::Environment::get().getWorld()->getPlayer().recordCrimeId(); } }; @@ -825,7 +826,6 @@ namespace MWScript { MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayerPtr(); player.getClass().getNpcStats(player).setBounty(0); - MWBase::Environment::get().getWorld()->confiscateStolenItems(player); MWBase::Environment::get().getWorld()->getPlayer().recordCrimeId(); } }; From 3484df0743670e68a70c688922fd55885e1bcb13 Mon Sep 17 00:00:00 2001 From: Jeffrey Haines Date: Sat, 19 Apr 2014 19:42:49 -0400 Subject: [PATCH 2/2] Fixed garage value found in beta's static analysis Source: https://forum.openmw.org/viewtopic.php?f=6&t=2059#p23844 --- apps/openmw/mwmechanics/mechanicsmanagerimp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp index 147f6d03f..84dc337c9 100644 --- a/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp +++ b/apps/openmw/mwmechanics/mechanicsmanagerimp.cpp @@ -823,6 +823,8 @@ namespace MWMechanics alarm = esmStore.get().find("iAlarmKilling")->getInt(); else if (type == OT_Theft) alarm = esmStore.get().find("iAlarmStealing")->getInt(); + else + return false; // Innocent until proven guilty bool reported = false;