diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 88fee221adf904493f0ae27cd67ef7fdf4c8b617..9d3e5f1267fdef43795b177b97ed8447a85b244f 100644 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -2794,6 +2794,9 @@ void LLAppearanceMgr::removeItemFromAvatar(const LLUUID& id_to_remove) // LLWearableBridge::removeItemFromAvatar(item_to_remove); // } // [SL:KB] - Patch: Appearance-RemoveWearableFromAvatar | Checked: 2010-08-13 (Catznip-2.1.2a) | Added: Catznip-2.1.1d +// [RLVa:KB] - Checked: 2010-09-04 (RLVa-1.2.1c) | Added: RLVa-1.2.1c + if ( (!rlv_handler_t::isEnabled()) || (gRlvWearableLocks.canRemove(item_to_remove)) ) +// [/RLVa:KB] { /*const*/ LLWearable* pWearable = gAgentWearables.getWearableFromItemID(item_to_remove->getLinkedUUID()); if ( (pWearable) && (LLAssetType::AT_BODYPART != pWearable->getAssetType()) ) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 3683b7eaacdc4472a7cdfd525bdddb08e28ebf1b..1665286516bae67e790a654c8c1809421930e05b 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -3985,10 +3985,7 @@ void LLObjectBridge::performAction(LLInventoryModel* model, std::string action) else if (isRemoveAction(action)) { LLInventoryItem* item = gInventory.getItem(mUUID); -// if(item) -// [RLVa:KB] - Checked: 2010-03-04 (RLVa-1.2.0a) | Added: RLVa-1.2.0a - if ( (item) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(item))) ) -// [/RLVa:KB] + if(item) { LLVOAvatarSelf::detachAttachmentIntoInventory(item->getLinkedUUID()); } @@ -4408,10 +4405,7 @@ void remove_inventory_category_from_avatar_step2( BOOL proceed, LLUUID category_ for(i = 0; i < obj_count; ++i) { LLViewerInventoryItem *obj_item = obj_item_array.get(i); -// if (get_is_item_worn(obj_item->getUUID())) -// [RLVa:KB] - Checked: 2010-03-16 (RLVa-1.2.0a) | Modified: RLVa-1.0.5a - if ((get_is_item_worn(obj_item->getUUID())) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(obj_item)))) -// [/RVLa:KB] + if (get_is_item_worn(obj_item->getUUID())) { LLVOAvatarSelf::detachAttachmentIntoInventory(obj_item->getLinkedUUID()); } diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 4adb65b2d957ef9d3cc7c54a0d6c2f74e851f4aa..eeb7d3e63bdad4e04baf7e4930f70fe91965102f 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -1209,7 +1209,10 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object) BOOL LLVOAvatarSelf::detachAttachmentIntoInventory(const LLUUID &item_id) { LLInventoryItem* item = gInventory.getItem(item_id); - if (item) +// if (item) +// [RLVa:KB] - Checked: 2010-09-04 (RLVa-1.2.1c) | Added: RLVa-1.2.1c + if ( (item) && ((!rlv_handler_t::isEnabled()) || (gRlvAttachmentLocks.canDetach(item))) ) +// [/RLVa:KB] { gMessageSystem->newMessageFast(_PREHASH_DetachAttachmentIntoInv); gMessageSystem->nextBlockFast(_PREHASH_ObjectData); diff --git a/indra/newview/rlvhandler.cpp b/indra/newview/rlvhandler.cpp index d19da6c10c9a62ef18167ef3548b4ab3495a701b..f939f81f24b61f3ea2bbf7dce35f061a39ffaa8d 100644 --- a/indra/newview/rlvhandler.cpp +++ b/indra/newview/rlvhandler.cpp @@ -1357,21 +1357,14 @@ ERlvCmdRet RlvHandler::processForceCommand(const RlvCommand& rlvCmd) const } } break; - case RLV_BHVR_DETACHME: // @detachme=force - Checked: 2010-04-04 (RLVa-1.2.0c) | Modified: RLVa-1.2.0c + case RLV_BHVR_DETACHME: // @detachme=force - Checked: 2010-09-04 (RLVa-1.2.1c) | Modified: RLVa-1.2.1c { VERIFY_OPTION(rlvCmd.getOption().empty()); // NOTE: @detachme should respect locks but shouldn't respect things like nostrip const LLViewerObject* pAttachObj = gObjectList.findObject(rlvCmd.getObjectID()); - if ( (pAttachObj) && (pAttachObj->isAttachment()) && (!gRlvAttachmentLocks.isLockedAttachment(pAttachObj)) ) + if ( (pAttachObj) && (pAttachObj->isAttachment()) ) { - gMessageSystem->newMessage("ObjectDetach"); - gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - - gMessageSystem->nextBlockFast(_PREHASH_ObjectData); - gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, pAttachObj->getLocalID()); - gMessageSystem->sendReliable( gAgent.getRegionHost() ); + LLVOAvatarSelf::detachAttachmentIntoInventory(pAttachObj->getAttachmentItemID()); } } break;