|
|
|
@ -107,7 +107,8 @@ namespace MWClass
|
|
|
|
|
|
|
|
|
|
MWWorld::ContainerStore &invStore = actor.getClass().getContainerStore(actor);
|
|
|
|
|
|
|
|
|
|
bool needKey = ptr.getCellRef().getLockLevel() > 0;
|
|
|
|
|
bool isLocked = ptr.getCellRef().getLockLevel() > 0;
|
|
|
|
|
bool isTrapped = !ptr.getCellRef().getTrap().empty();
|
|
|
|
|
bool hasKey = false;
|
|
|
|
|
std::string keyName;
|
|
|
|
|
|
|
|
|
@ -125,24 +126,26 @@ namespace MWClass
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (needKey && hasKey)
|
|
|
|
|
if ((isLocked || isTrapped) && hasKey)
|
|
|
|
|
{
|
|
|
|
|
if(actor == MWMechanics::getPlayer())
|
|
|
|
|
MWBase::Environment::get().getWindowManager()->messageBox(keyName + " #{sKeyUsed}");
|
|
|
|
|
unlock(ptr); //Call the function here. because that makes sense.
|
|
|
|
|
if(isLocked)
|
|
|
|
|
unlock(ptr); //Call the function here. because that makes sense.
|
|
|
|
|
// using a key disarms the trap
|
|
|
|
|
if(!ptr.getCellRef().getTrap().empty())
|
|
|
|
|
if(isTrapped)
|
|
|
|
|
{
|
|
|
|
|
ptr.getCellRef().setTrap("");
|
|
|
|
|
MWBase::Environment::get().getSoundManager()->playSound3D(ptr,
|
|
|
|
|
"Disarm Trap", 1.0f, 1.0f, MWBase::SoundManager::Play_TypeSfx,
|
|
|
|
|
MWBase::SoundManager::Play_Normal);
|
|
|
|
|
isTrapped = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!needKey || hasKey)
|
|
|
|
|
if (!isLocked || hasKey)
|
|
|
|
|
{
|
|
|
|
|
if(!ptr.getCellRef().getTrap().empty())
|
|
|
|
|
if(isTrapped)
|
|
|
|
|
{
|
|
|
|
|
// Trap activation
|
|
|
|
|
boost::shared_ptr<MWWorld::Action> action(new MWWorld::ActionTrap(ptr.getCellRef().getTrap(), ptr));
|
|
|
|
|