========================================= D/s Collar — Outfits Plugin Setup ========================================= The Outfits menu reads from your #RLV shared folder. The folder layout the collar expects is: #RLV/ .outfits/ .base/ ← non-strippable base kit (REQUIRED) Casual/ ← one folder per outfit Formal/ BDSM/ ... Two things must exist before the Outfits menu will work usefully: 1. #RLV/.outfits/ — the outfits library root 2. #RLV/.outfits/.base/ — the protected base kit subfolder The dot-prefixed naming is deliberate. Dot-prefixed folders are hidden from RLV folder listings (@getinv / @getinvworn), so the outfits library stays invisible to the collar's Folders menu, to other people's RLV devices, and to folder-browsing traps — while remaining fully targetable by the collar's own RLV commands on RLVa viewers (Firestorm and its descendants), which is what nearly everyone uses. This is the same convention OpenCollar uses for its .outfits / .core folders. Note for genuine-RLV viewers (Marine's Restrained Love, Kokua): those viewers cannot target dot-prefixed folders at all, so folder locks do not bind there. The collar compensates by re-dressing your base kit after every outfit change — base items come back even if a strip phase catches them — but if you use one of these viewers, consider giving your permanent items explicit individual locks as well. ----------------------------------------------------------------- If you followed an older version of this notecard ----------------------------------------------------------------- An earlier version of this notecard described a tilde layout (~outfits / ~outfits/~base). The collar does not use that layout — rename those folders if you created them: ~outfits → .outfits ~outfits/~base → .outfits/.base Right-click each folder in your inventory → Rename. Capitalisation and the exact spelling matter; the leading dot (.) is required. ----------------------------------------------------------------- 1. Make sure you have a #RLV shared folder ----------------------------------------------------------------- In Firestorm (or any RLV-capable viewer): Inventory window → + (New) → New Folder Name the folder exactly: #RLV (The # symbol is required.) If a #RLV folder already exists, skip this step. ----------------------------------------------------------------- 2. Create #RLV/.outfits ----------------------------------------------------------------- Inside #RLV, create a subfolder named exactly: .outfits The leading dot is required. It keeps the outfits library hidden from RLV folder listings, so it never appears in the collar's Folders menu and cannot be browsed or force-attached from by other people's RLV devices. ----------------------------------------------------------------- 3. Create #RLV/.outfits/.base ----------------------------------------------------------------- Inside #RLV/.outfits, create a subfolder named exactly: .base Drop links to your "always on" items into .base: - Your body / mesh head - AO / animation overrider - The collar itself (optional) - Any jewelry, piercings, or implants you treat as permanent - HUDs you always wear How to add a link: right-click an item in your inventory → "Copy", then in the .base folder → "Paste as Link". Always link; never move the original. RLV needs the link, not the item. During a Wear, the collar holds a transient @detachallthis lock on .outfits/.base for the duration of its strip phases, and after the outfit attaches it re-dresses .base — so your base kit survives every outfit change and wins any attachment-slot conflict with the newly attached outfit. You do not need to lock anything in .base individually for the collar's own actions; explicit locks you set yourself (or another collar plugin sets) are respected as well. ----------------------------------------------------------------- 4. Create one folder per outfit under #RLV/.outfits ----------------------------------------------------------------- Alongside .base, create one subfolder per outfit. Each holds links to the items in that look. Example tree: #RLV/ .outfits/ .base/ (body, AO, collar, jewelry — links) Casual/ (jeans, t-shirt, sneakers — links) Formal/ (dress, heels, gloves — links) BDSM/ (corset, cuffs, gag — links) The Outfits picker lists everything under .outfits *except* folders whose names start with "." or "~", so .base is hidden from the picker even though it's protecting your kit. ----------------------------------------------------------------- Optional: subfolders inside .base (+add / ~replace) ----------------------------------------------------------------- .base may contain subfolders. Every Wear ends by re-dressing .base recursively, and the subfolder name's first character decides how its items come back: .outfits/ .base/ (items directly here: replace — base wins the slot) +Jewelry/ ← "+" = add: layers on top, never kicks whatever the outfit put in that slot ~Body/ ← "~" = replace: kicks a conflicting outfit item off the slot (base wins) Unprefixed subfolders behave like "~" (replace). The "+" behavior is the standard RLV folder convention (it makes the viewer attach that folder additively), so it also applies anywhere else you use it under .outfits. ----------------------------------------------------------------- 5. Using the Outfits menu ----------------------------------------------------------------- Tap an outfit in the picker to open its action menu. Five actions are available; which ones you see depends on the touching avatar's ACL level. Add — Attach this folder additively. Items already worn at slots the new folder would fill are NOT kicked off — the new items layer on top. Uses @attachallover. Wear — Replace. Strips worn unlocked items (attachments AND system clothing layers) in three phases: 1. @detachallthis:.outfits=force — clears .outfits subtree 2. @remattach=force — attachments worn from outside .outfits (regular inventory, unlinked HUDs, etc.) 3. @remoutfit=force — system clothing layers worn from outside .outfits Then attaches the chosen folder, and finally re-dresses .base (@attachall) so the foundation always comes back complete — base items win any slot conflict with the outfit just attached. Items under #RLV/.outfits/.base are protected and survive every phase, as does the collar itself and anything else with an explicit lock. Remove — Detach this outfit's items. Blocked silently if the outfit is locked. Lock — Apply a folder lock (@detachallthis) to this outfit. While locked, the outfit cannot be removed by the Strip menu, the Remove action, or external relays. Available to ACL 3 (trustee), ACL 4 (self-owned wearer), and ACL 5 (primary owner) only. Unlock — Release the lock. Same ACL gating as Lock. Lock state is **persistent**: it lives in the collar's linkset data and is automatically re-applied on every script start. Detaching and re-attaching the collar does NOT clear locks — RLV restrictions survive the rez cycle because the collar itself is the issuing object. A lock is released only when: - You tap **Unlock** in the picker for that outfit. - You **factory-reset** the collar (Maintenance → Reset). The plugin releases viewer-side restrictions explicitly before the reset so nothing is left orphaned. Locked outfits are marked with a "*" in the picker. ----------------------------------------------------------------- ACL summary ----------------------------------------------------------------- ACL 1 (public) : Add, Wear, Remove ACL 2 (owned wearer) : Add, Wear, Remove ACL 3 (trustee) : Add, Wear, Remove, Lock, Unlock ACL 4 (self-owned wearer) : Add, Wear, Remove, Lock, Unlock ACL 5 (primary owner) : Add, Wear, Remove, Lock, Unlock ----------------------------------------------------------------- Troubleshooting ----------------------------------------------------------------- "No outfits found in #RLV/.outfits." Either .outfits doesn't exist yet, or it exists but holds no outfit subfolders (only .base counts as protected, not as an outfit). Create at least one regular subfolder (e.g. Casual) and put item links inside it. "RLV not responding." Make sure RLV (or RLVa) is enabled in your viewer preferences. Firestorm: Preferences → Privacy → General → "Enable Restrained Love API". Outfit still won't change. Check capitalization on folder names — RLV is case-sensitive. Make sure .base is spelled exactly ".base" (with the leading dot) and lives directly under #RLV/.outfits, not somewhere else. Remove does nothing. The outfit is probably locked (look for "*" in the picker) or one of its items has its own @detachallthis lock from a different source (plugin_folders, an RLV relay, etc.). Unlock the outfit first, then Remove. Strip menu still shows an item I expect to be locked. The collar pre-filters the Strip picker against every active @detachallthis folder lock the viewer can see. A lock on a folder that is invisible to the viewer's folder API (for example a dot-prefixed folder on a genuine-RLV viewer) cannot be pre-filtered — those items show up once, fail silently when clicked, and are hidden for the rest of the session.