mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-28 08:09:39 +00:00
Allow locking/picking just about everything
This commit is contained in:
parent
56b6a7ada4
commit
a86a8ecc0e
7 changed files with 10 additions and 45 deletions
|
@ -138,7 +138,7 @@
|
|||
Bug #5134: Doors rotation by "Lock" console command is inconsistent
|
||||
Bug #5137: Textures with Clamp Mode set to Clamp instead of Wrap are too dark outside the boundaries
|
||||
Bug #5149: Failing lock pick attempts isn't always a crime
|
||||
Bug #5155: Shouldn't be able to magically lock organic containers
|
||||
Bug #5155: Lock/unlock behavior differs from vanilla
|
||||
Feature #1774: Handle AvoidNode
|
||||
Feature #2229: Improve pathfinding AI
|
||||
Feature #3025: Analogue gamepad movement controls
|
||||
|
|
|
@ -305,20 +305,6 @@ namespace MWClass
|
|||
return getContainerStore (ptr).getWeight();
|
||||
}
|
||||
|
||||
void Container::lock (const MWWorld::Ptr& ptr, int lockLevel) const
|
||||
{
|
||||
if(lockLevel != 0)
|
||||
ptr.getCellRef().setLockLevel(abs(lockLevel)); //Changes lock to locklevel, if positive
|
||||
else
|
||||
ptr.getCellRef().setLockLevel(ESM::UnbreakableLock); // If zero, set to max lock level
|
||||
}
|
||||
|
||||
void Container::unlock (const MWWorld::Ptr& ptr) const
|
||||
{
|
||||
int lockLevel = ptr.getCellRef().getLockLevel();
|
||||
ptr.getCellRef().setLockLevel(-abs(lockLevel)); //Makes lockLevel negative
|
||||
}
|
||||
|
||||
bool Container::canLock(const MWWorld::ConstPtr &ptr) const
|
||||
{
|
||||
const MWWorld::LiveCellRef<ESM::Container> *ref = ptr.get<ESM::Container>();
|
||||
|
|
|
@ -47,12 +47,6 @@ namespace MWClass
|
|||
///< Returns total weight of objects inside this object (including modifications from magic
|
||||
/// effects). Throws an exception, if the object can't hold other objects.
|
||||
|
||||
virtual void lock (const MWWorld::Ptr& ptr, int lockLevel = 0) const;
|
||||
///< Lock object
|
||||
|
||||
virtual void unlock (const MWWorld::Ptr& ptr) const;
|
||||
///< Unlock object
|
||||
|
||||
virtual bool canLock(const MWWorld::ConstPtr &ptr) const;
|
||||
|
||||
virtual void readAdditionalState (const MWWorld::Ptr& ptr, const ESM::ObjectState& state)
|
||||
|
|
|
@ -240,20 +240,6 @@ namespace MWClass
|
|||
}
|
||||
}
|
||||
|
||||
void Door::lock (const MWWorld::Ptr& ptr, int lockLevel) const
|
||||
{
|
||||
if(lockLevel != 0)
|
||||
ptr.getCellRef().setLockLevel(abs(lockLevel)); //Changes lock to locklevel, if positive
|
||||
else
|
||||
ptr.getCellRef().setLockLevel(ESM::UnbreakableLock); // If zero, set to max lock level
|
||||
}
|
||||
|
||||
void Door::unlock (const MWWorld::Ptr& ptr) const
|
||||
{
|
||||
int lockLevel = ptr.getCellRef().getLockLevel();
|
||||
ptr.getCellRef().setLockLevel(-abs(lockLevel)); //Makes lockLevel negative
|
||||
}
|
||||
|
||||
bool Door::canLock(const MWWorld::ConstPtr &ptr) const
|
||||
{
|
||||
return true;
|
||||
|
|
|
@ -41,12 +41,6 @@ namespace MWClass
|
|||
static std::string getDestination (const MWWorld::LiveCellRef<ESM::Door>& door);
|
||||
///< @return destination cell name or token
|
||||
|
||||
virtual void lock (const MWWorld::Ptr& ptr, int lockLevel = 0) const;
|
||||
///< Lock object
|
||||
|
||||
virtual void unlock (const MWWorld::Ptr& ptr) const;
|
||||
///< Unlock object
|
||||
|
||||
virtual bool canLock(const MWWorld::ConstPtr &ptr) const;
|
||||
|
||||
virtual bool allowTelekinesis(const MWWorld::ConstPtr &ptr) const;
|
||||
|
|
|
@ -29,7 +29,8 @@ namespace MWMechanics
|
|||
std::string& resultMessage, std::string& resultSound)
|
||||
{
|
||||
if (lock.getCellRef().getLockLevel() <= 0 ||
|
||||
lock.getCellRef().getLockLevel() == ESM::UnbreakableLock) //If it's unlocked or can not be unlocked back out immediately
|
||||
lock.getCellRef().getLockLevel() == ESM::UnbreakableLock ||
|
||||
!lock.getClass().hasToolTip(lock)) //If it's unlocked or can not be unlocked back out immediately
|
||||
return;
|
||||
|
||||
int lockStrength = lock.getCellRef().getLockLevel();
|
||||
|
|
|
@ -146,17 +146,21 @@ namespace MWWorld
|
|||
|
||||
void Class::lock (const Ptr& ptr, int lockLevel) const
|
||||
{
|
||||
throw std::runtime_error ("class does not support locking");
|
||||
if(lockLevel != 0)
|
||||
ptr.getCellRef().setLockLevel(abs(lockLevel)); //Changes lock to locklevel, if positive
|
||||
else
|
||||
ptr.getCellRef().setLockLevel(ESM::UnbreakableLock); // If zero, set to max lock level
|
||||
}
|
||||
|
||||
void Class::unlock (const Ptr& ptr) const
|
||||
{
|
||||
throw std::runtime_error ("class does not support unlocking");
|
||||
int lockLevel = ptr.getCellRef().getLockLevel();
|
||||
ptr.getCellRef().setLockLevel(-abs(lockLevel)); //Makes lockLevel negative
|
||||
}
|
||||
|
||||
bool Class::canLock(const ConstPtr &ptr) const
|
||||
{
|
||||
return false;
|
||||
return hasToolTip(ptr);
|
||||
}
|
||||
|
||||
void Class::setRemainingUsageTime (const Ptr& ptr, float duration) const
|
||||
|
|
Loading…
Reference in a new issue