Thursday, January 17, 2019

New product : Env Box

Hi !

If you love shiny latex, and/or if you like taking photos in Second Life, you probably already own what is called a "reflection box" to enhance the shine on your suits or on any shiny surface such as metal or plastic.

This product, the Env Box, is meant to go one step further by providing actual environment maps that rotate around you to compensate for your orientation and make the reflection more realistic.

The Env Boxes (because there are several) allow to make the environment reflection go from this :

To this :

And from this :

To this :

The additional shine makes a real difference, doesn't it ?

This post is divided in two sections : the first part demonstrates the product and the second part is the actual manual.


There are many reflection boxes available on the market nowadays, from simple freebies to complex products. Some of them are subtle, others are very bright. Notice that I call them "reflection boxes" while the product I am demonstrating here is called an "environment box" ("Env Box" for short). There is a reason for this that I will explain now.

The Second Life viewer is, at the time of this writing, unable to render real-time reflections of the world around your avatar (*). So for now, when you want something to shine like metal or polished plastic, reflection boxes are your best bet because they project a picture onto your avatar, making the shiny parts "reflect" the projected picture.

It really is an improvement over the stock environment reflection featured by the SL viewer, but as far as I know, all the reflection boxes I tried out only project a single image in all six directions. This is not really an environment where you would expect to see different reflections depending on where you look from. In other words, none of them contains an actual 360° panorama, but the Env Box does.

It projects six different images organized like a cube in a way that there is no gap or seam between them, and those six pictures form a complete environment, hence the name "environment map" or "cube map" used by video games.

These images are 512x512 so they don't take too much video memory (1.5 times a 1024x1024).

What's more, it is able to rotate around you to always face the same direction, so that when you walk around and make a turn, the reflection on your body will actually rotate too in a realistic way.

For example, here I am facing North while wearing an Env Box :

And now facing West with the same Env Box, still worn :

Notice the shine changes, because the Env Box rotated clockwise to compensate and stay aligned with the North regardless of my own orientation. The two big white blobs of light on the latex are the reflection of the sun.

You can also drop your Env Box in-world and it will follow you, keeping its orientation constant so that when you turn the reflection turns as well.

Here are two videos of the "Gdansk" environment rotating around a sphere and around me (I'm wearing the KaS Corset-Dress in the second video, with an Environment value of 60 and a Glossiness value of 255 on its surface). These videos help showing the environment map in its entirety.


Notice that this environment is not the same as the one shown in the pictures above. This is because the Env Box contains not one environment, but 20 ! "Corsica" like in the first pictures, "Gdansk" like in the animated pictures here, and 18 more, one for every situation.

Some of them are bright, others are soft, some are fit to be worn outdoors and others indoors. All of the pictures were taken with brightness set to 20% but you can modify the brightness yourself with a click on a menu button, from 5% to 100%. All the pictures in this montage were taken in Second Life without any modification save for adding the names and putting them together in a single picture.

For "Panorama", "Corsica" and "Patio", I oriented the box in order to match the position of the sun in the "Sunset" Windlight setting, knowing that the box is able to rotate itself to keep its global orientation. All the other shots were taken with the "Midnight" Windlight setting, that's why they appear darker.

Some of the environments are marked "tintable" because they are not very saturated (like "Fireplace") or not saturated at all (i.e. in shades of grey, like "Georgentor"), which means that you can use the "Color" menu of the box to tint the environment yourself. Of course, you can tint any environment, but some react better to tinting than others.

For example, the first page of the "Color" menu gives you several colors like "Sunrise" (a light pink), "Sunset" (a light yellow), "Night" (a dark blue) etc. This makes it very easy to tint your environment according to the current time of the day in the sim. If the sun is setting and you are outdoors surrounded by buildings, choosing Bonifacio and tinting it "Sunset" works very well. If you are in a dark room with many red lights around you, choosing "Lights" and tinting red does the trick too.

Substance Painter and Substance Designer users will recognize "Corsica", "Gdansk", "Patio", "Bonifacio" and "Panorama" because they are some of the default environments featured in these two 3D applications.

Please note that since there is no LSL function to change the projectors via a script, this means that the product contains 20 objects, all identical save for the images they project. It is up to you to wear the one you want (only one at a time, of course), they all contain the same script and behave the same way.

A second product called "Environment Probe" (yet to be released at the time of this writing but it will be out soon) will allow you to create your own environments from SL pictures to make your own environment boxes.

That is all with the demonstration of what the Env Boxes can do. You can find the product here on the Marketplace, since it is copy/no-transfer please try the demo first because no refund will be possible if you buy and don't like it, since you won't be able to return it (refunds are possible only for double purchases).

The rest of this post is the actual manual of the Env Box.


This section of the post explains how to use the Env Box.

First of all, to make sure you can actually see the projections sent by a box, you must turn Advanced Lighting Model on in the graphics preferences of your viewer :

It doesn't matter if you turn the shadows on or not.

Secondly, only surfaces that have an environment value greater than 0 can reflect the images of the Env Box (or any projected picture for that matter). For example, the "Env. sphere test (root)" object contained in the product has a white specular texture, 255 glossiness and 255 environment, which makes it reflect like a mirror, there is no blurriness. If the environment value is set lower, the shine is darker. If you decide to give it a "Low", "Medium" or "High" shine instead of a specular shine (what is called "legacy shine"), it will work too. But if there is no environment value at all (or no shine) and no legacy shine

For example, if the sphere is set to 255/255 with a white shine color, you see this :

It shines like a mirror. Notice the specular lights that come from the projection (you didn't see them in the pictures in the Demonstration chapter because I made the shine color black, but here I made it white to actually show them on purpose). Please note that unlike in the Demonstration chapter, I have set the brightness of the box to 100% instead of 20% to show how bright it can go.

If you decrease the Environment value down to, say, 50, you get this :

It is a lot darker (as if you turned the brightness down to 20%, since 50 is roughly the fifth of 255), and if you set it to zero you get this :

Well, this is interesting. You get no reflection except for the specular shine coming from the projections... with a color that is the average of the projected picture. In plain English, this means that if a picture is roughly blue (like the sky), its specular shine (one of the circular reflections you see above) will be blue.

If you lower the glossiness (the lower the glossiness, the blurrier the reflection), let's say to 80, you get this :

No reflection but blurry specular lights.

And if the surface has some environment value, then you get blurry reflections :


But... wait. What are those black gaps ?

They are the result of the surface not being fully glossy. Glossiness is like the inverse of roughness (if you're into 3D design, you must know that SL is not PBR but uses a spec/gloss shader instead of a metal/rough shader), the lower it is the more it blurs the projected pictures. Which is a problem because it also blurs the edges of the pictures, and that's why you get gaps.

There is a way to circumvent that though. The "Optimal Glossiness" menu of the Env Box allows you to close the gaps, literally. I will explain this feature below, when it comes to using menus. For now, see how it looks like with the "Optimal Glossiness" of the box set to 80 :

A blurry reflection with no gaps, as expected. This is very good for latex because latex does not actually reflect like a mirror, it is a bit rough and grainy so its glossiness value should be lower than 255 (I often use 150 to 200 personally).

Now... the bad news. I showed you that a surface needs to have SOME environment value to reflect the projected pictures, and it turns out that Maitreya does not have any. Zero environment value and no way to turn it up. I would really like Onyx LeShelle (owner of Maitreya) to update her popular mesh body to finally let us add environment to the skin, tattoo, underwear and clothing layers (ideally independently), like we can change the glossiness. Feel free to ask her if you want your Latex Catsuits to shine on your Lara mesh body !

There is some consolation though, the Env Box is not completely ineffective on a Maitreya latex suit. Let me show you.

In this picture, I am wearing a deep black MdlM latex suit on my Maitreya Lara mesh body, at midnight, with no light around me and no Env Box worn :

As you can see... well not really, you can't see anything at all.

Now I wear the Gdansk Env Box (ok, it is is a rather bright one, unfit for a night setting, but this is just for the sake of the example) :

It doesn't reflect on the latex, but at least it behaves like normal body lights with colors. It's not bad, but it's not an actual reflection either. If Lara had an environment value on its layers, you would see reflection.

Slink does have this ability though, so let me show you how it looks with it :

See the difference ? This is a Slink Hourglass body with the deep black MdlM catsuit applied to it, an environment value of 40 and a glossiness set to 75 (and optimal glossiness set to 75 in the env box as well to avoid seeing gaps in the reflection).

Here is how it looks at noon (I set the brightness of the box to 100% for this one) :

Now we're talking. Well, it shines a lot more than latex but once again, this is for the sake of the example. You wouldn't normally set the brightness so high, 20% is enough in most cases. The latex is supposed to be black after all, so the reflection should be dark. More like this :

Don't mind the black gloves, they're the Maitreya hands with the latex still applied. That way you can see the difference in shine between Slink (which has environment) and Maitreya (which does not).

Notice that the MdlM Latex Catsuits have a grain, they are not completely smooth, so it is normal that the glossiness is not set to 255. A value of 75 here is plenty, as you can see on this closeup :

But Slink also allows you to clear the normal map, which in the MdlM Latex Catsuits contains both the grain and the seams. Doing so makes the suit completely smooth, so when you do that you can set the glossiness to 255 (and change the optimal glossiness of the env box to 255 too to match and avoid gaps), and you get this :

No creases, no seams, no grain, it looks like a smooth latex skin now.

Now, don't get me wrong, this doesn't mean that Maitreya Lara is incompatible with the Env Box. This simply means that if you are wearing a Maitreya Lara mesh body, and you want to wear latex on it, you you will prefer wearing mesh latex rather than applied latex. For example, a KaS mesh latex dress like I demonstrated at the beginning of this post. I just wish applied latex also had the ability to reflect the environment.

One thing though : alpha-blended textures do not reflect a projected image at all. This means, in plain English, that transparent latex does not reflect reflection lights or the Env Box, unless it is set to Mask Mode (in which case the less transparent parts are fully opaque and the more transparent parts are fully invisible, this works well for stockings, gloves and bodysuits, less so for transparent or clear latex). This is a limitation of the SL rendering engine, there is nothing we can do about it I'm afraid.

The features

Now that everything technical has been explained, let me explain how to use the Env Box.

Firstly, as I pointed out above, since we can't change a projector texture through a script, there are 20 "Env Box" objects in the product. Each one is for a particular setting, some are indoors, others outdoors, some are soft and others are bright, some are tintable and others have built-in colors in them (but you can still tint them if you want).

This means that you wear one, and exactly one Env Box. You can wear more but it will only make the reflections look messy.

The rest of this manual explains the different menus and features but you don't need to know any of this to make your Env Box work, the default settings are more than enough for most users.

Getting the menu

When the box is worn, you can access its menu either by touching it or by saying on the chat :

/456 *


/456 env

The channel to access an Env Box is always 456 and you can only access your own Env Box. Each Env Box has an internal prefix, which is "env" by default. If you change the prefix of an Env Box, you access its menu by typing its prefix on channel 456 instead of "env". Saying "*" on channel 456 always works but you may get several menus if several Env Boxes are around.

The menu you get looks like this :

The "Active" switch turns all the lights of the Env Box on and off. It also stops the "follow" mode (see below) when inactive.

You can see the prefix mentioned on the menu.

You may argue that it is difficult to click on the box since it is nowhere to be seen. In fact, when invisible, it looks like this with "Highlight Invisible" mode on (that's Ctrl-Alt-T to highlight invisible surfaces in red) :

That's the small rectangles floating around your body.

If you set it visible in the Options menu, you will see the whole box :

Notice that the box is partially under the ground, this is for two reasons. The first one is that it can light your feet from below, and the second one is that it hides the lower parts nicely when the box is not visible. That way it is unlikely you will click on it by mistake.

Please note that the prims are alpha-masked, fullbright and their texture is invisible. As a result, they do not project shadows and do not interfere with alpha-blended textures on your body or in-world.

Lastly, the box is worn on "root" (a.k.a. "avatar center") because it should stay upright regardless of the rotation of your avatar. If it were worn on any other attachment point, it would rotate and change position as you walk, sit etc. You don't want that so it must be worn on root.

Worn/Rezzed, Follow Mode

Any Env Box actually works whether it is worn or rezzed in-world, and behaves similarly in both modes.

By default, when it is worn, it rotates around your body to always face the same global direction. When it is rezzed in-world, it does not rotate but follows your position while you are in the same sim. By default, if you leave it there, it derezzes after an hour of inactivity.

You can change this behavior in the "Rotation" menu :

If you switch "Follow" off, then if the box is worn it no longer compensates for your avatar's orientation (making the reflection less realistic, looking like the world revolves around you... but it doesn't, does it ?), and if it is rezzed in-world it just stays where it is, it is said to be "static".

If you click on any of the directions you can set an angle for the box (absolute if "Follow" is on or if the box is rezzed, relative to your avatar if it is worn and "Follow" is off). By default, the "Front" prim is oriented towards the North (that's 90° because trigonometry).

The "Walk back" switch depends on your Animation Overrider. Most AOs will make your avatar face the camera when you walk back (using the down arrow key), but some don't and make you walk backwards like Michael Jackson. If you use one of the former, keep "Walk back" on, otherwise turn it off.

For technical reasons (more like an SL limitation), if you are in Mouselook and sitting on something, for example a vehicle, the Env Box won't rotate at all because it cannot tell the rotation of the prim the avatar is sitting on, and its own rotation is superseded by the orientation of the camera when in Mouselook. Maybe I could fix this later, thanks to the "@getsitid" RLV command, but since the Env Box does not require RLV to work at all, and given its script is already quite big, I don't really want to add a feature like this.


The "Brightness" menu allows you to set the brightness of the whole box (i.e. the "intensity" factor of all 6 projections) :

There is not much to say, except that the brightness is 20% by default ("0.2" in the text on the menu). SL is not PBR (Physically-Based Rendering, an advanced technique of shading surfaces), so it is up to you to choose the appropriate brightness according to where you are and what you are wearing.

For the "Stars" and "Lights" Env Boxes, I recommend you turn the brightness all the way up to 100% because they are actual lights, so they're supposed to be bright. Of course this is your choice entirely.

"Tokyo" looks good at 50% brightness because it has a lot of lights too.

A good rule of thumb is, if the Env Box features direct lights, its brightness can go up depending on the intensity of said lights.


Being able to tint your Env Box is a nice feature, because it lets you adapt the reflection to the ambient light. Not all places are lit with white lights, some are more intricate than that and some Windlight settings are created to set a particular ambience. Even the four default SL times of the day light the scene differently.

This is why you have a "Color" menu at your disposal :

This menu lets you pick a predefined color or set your own with the "CUSTOM" button (with which you can enter either a RGB value or a vector value). The first page of the menu features the most common colors you will want to set your box to, depending on the ambient light in the sim.

For example, here is me with an Env Box that is not tinted (or more exactly, tinted "White") in a sunrise setting :


It does not look bad, but I think it looks better if the Env Box is tinted "Sunrise" :

It is also a good way to tint the tintable indoors environments such as "Fireplace", "Georgentor" and such, because they are weakly saturated or not saturated at all (i.e. they have little to no colors in them) and you want to reproduce the average colors of the walls around you.

Another nice feature is that if you tint the box manually with the SL tools, it will detect the color change and apply it to the projections too. That way instead of clicking on "CUSTOM" and having to guess the RGB values of the color you want, you can simply use the SL tools and set the color with their UI, it is much easier that way.


You don't normally need to change the size of your Env Box, which is 2m x2m x2.5m by default. However, there are cases, for example when lying on the floor or in a bed, where you need a bigger box because otherwise some parts of your body are simply not lit.

The Size menu helps you do this :

There are two caveats to keep in mind though.

Firstly, if your box is smaller than 2.5 m (which is the case by default), it is not a cube because its height remains at 2.5 m and won't go smaller than that. This is because otherwise your standing avatar would not be lit entirely. The effect of this though, is that the reflection is deformed, stretched upwards.

Secondly, if your box is wider than 2 m, it will shrink if it is too close to someone else (down to 2 m) so you won't impose your own reflection onto others. And others using this Env Box won't impose theirs on you either. However, someone who is closer than 2 m away from you is likely ok with having your Env Box shine on their body, that's why the box won't shrink smaller than that.

This means that the box activates a repeated sensor if its size is 2.5 m or more. It is not a heavy sensor, it won't tax the sim as it pings once every 5 seconds, but it's better not to use any sensor at all.

Personally I  recommend leaving the size to 2 m when worn. When rezzed in-world and made to follow you, making it 3 to 5 m is good because otherwise, depending on the sim, you may walk out of the box before it catches up with you, despite its fast timer.

Full disclosure, when "Active" and "Follow" modes are on (which is the case by default), the timer is active and checks your position and rotation twice per second. When it detects a change, it speeds up to 20 times per second to follow you as closely as possible, and slows down again when you stop moving or rotating. The tests showed that this does not increase the avatar's script time significantly, your AO is heavier on the sim by an order of magnitude.


This section remains empty for now but the prefix can be changed in order to control one Env Box at a time, in case you have several of them rezzed in the sim.

Optimal Glossiness

I brushed the subject earlier. In a nutshell, the glossier a surface, the crisper its reflections. The less glossy, the blurrier the reflections. Problem is, the reflections are six different textures, so their edges are blurred too and making the surface less glossy therefore creates black gaps between the images.

To address this, you have an "Optim. Gloss." menu :

Simply set it to the same (or roughly the same) glossiness as the surface you are looking at, for example when taking closeup photos, or the one you feel is most important not to show gaps or overlaps. The closer to 255, the more precise it must be. For example, setting the optimal glossiness to 255 while the surface is at 254 will show gaps clearly, while setting it at 80 while the surface is at 75 will barely show any gap.

If the optimal glossiness of the box is lower than the actual glossiness of the surface, you will see overlaps rather than gaps. Images are projected overlapping each other until you correct the optimal glossiness

Some Env Boxes such as "Stars" or "Lights" are very dark on the edges so you won't really notice gaps, which means setting an exact optimal glossiness on these boxes is less important than on realistic bright environments like Gdansk or Panorama, which are supposed to be seamless.


The "Options" menu allows you to tweak the Env Box :

"Visible" lets you show or hide the box, as showed above.
"Defaults" sets all the parameters back to default.
"Alone=derez" (sorry for the caption, I did not find anything clearer and shorter than that) means that if you leave your box alone while rezzed in-world for an hour, it will self-destruct. If you turn this switch off, the box will simply become static, it won't follow you anymore even if you come back, until you reactivate "follow" in the "Rotation" menu.

Finally, "Delete scripts" deletes the scripts, as the name implies (except that there is only one script to delete). Attention, if you do this you won't get any menu or any control anymore, and the box won't follow, change color or anything, it will become an unscripted object.

By the way, there is a small issue with the "Delete scripts" button. It gives you a text box asking if you are sure, it should be two buttons instead. If you type "YES" (in capitals), then the script will be deleted, otherwise it will be ignored. Type "NO" to return to the "Options" menu. It's a silly bug, I noticed it only after the release, and I will fix it later.

Updating your Env Box

I will probably keep working on this product and deliver updates to it in the future. When this happens, I send a notice to my group (RealRestraint Updates & Support, you can join for free) and you can then update your box.

To do this, simply rez the update orb contained in the folder somewhere near you and wait. You will receive the new product shortly. Make sure you are not in "Do Not Disturb" mode or you won't see the delivery. Leave the orb alone, it derezzes itself after 20 seconds.

Have fun !

(*) There used to be an attempt at rendering Screen Space Reflections a few years ago but it was shelved. There's actually one real-time reflecting surface in SL though, and that is the SL water. You can create a mirror with but it is cumbersome and only useful for photos, not for everyday use.

Friday, January 4, 2019

Third update to the Police Collar

Hello and Happy New Year !

Yes, this is yet another update to the Police Collar, and this one is about popular requests. There are a few of them, plus a few bug fixes, and I will develop for each one of them below.

There's a lot to say so if you don't want to read, here is the "tl;dr" version :

- The Police Collar is now able to suppress your speech after a punishment, even if you are gagged with RR gags. The speech suppression lasts until your vision returns to normal.

- The Police Collar is no longer restricted to just your user name or display name when it comes to finding out if you're speaking or not. The keyholder can now specify additional names to also monitor renamers you could be using (or RR gags with the "rename" function on).

- The Police Collar will no longer punish you when you are trying to struggle out, except when you fail a move (so it will punish you, just not as often).

- The level of punishment is chosen in a smarter way now.

- The relative position monitoring (a.k.a. "Stay close to Mistress, girl") is now working perfectly in all cases, with the right tolerance and all.

To update your collar and get these new features, you need to go to one of these locations :

My Little Shop
Chorazin's store
Roper's Dark Playground
Dark Wishes

Once there, click on the updater and follow the instructions. You need to choose "REPLACE" for this one as both the Zapper plugin and its Zapper_slave script have been modified, and the latter is contained in a child prim so the updater cannot update it without a replacement. Don't forget to save your times. If you do not get a "REPLACE" option, contact me (Marine Kelley) to get a manual replacement.

Now that this is out of the way, let's get into the specifics.

Speech suppression

I've often been asked to make it so the collar would suppress the speech after being zapped, and this makes sense as the current goes through the throat, it would be normal to paralyze it for a short time.

Problem is, what about gags ? Suppressing the direct speech is easy, but there is no way for an object to suppress the chat redirection RLV command that most gags use, so the sub would still be able to speak through a gag even after a punishment since when they speak it goes to a private channel instead of channel 0.

Well it works now, as long as the gags you use are RealRestraint gags (Deluxe gag, Ring gag, Ball gag, Tape gag, Isolation Hood or Mummy Gag), because they have a nice feature : they negotiate between each other to find out which one should garble the speech and which one should animate the mouth. If they didn't, wearing more than one gag at the same time would lead to double garbled speak unless all of them but one were set to "silent".

This is what the Police Collar will do from now on as well. When you are zapped, it pretends it is a very tight gag that supersedes all the others for a short time, that way you can't cheat. Even better, the speech suppression does not occur right away, you have 3 seconds during which you can speak and emote at will (this replaces the former allowance of 10 characters and 1 message only). After this delay, if you say something or emote something that goes beyond 20 characters ("/me" included), then whatever you say will be replaced with a predefined, random emote. That way you won't believe there is a bug or some chat lag when you try to say something after being punished, it is clear that your speech is restricted.

If the gag(s) you are using is not RealRestraint, then the speech suppression won't work, obviously, so you have a switch in the Options menu to completely deactivate it so it does not emote automatically.

The speech suppression remains active as long as your vision is blurry. You can speak again as soon as the vision returns to normal.

There is a switch in the Options menu named "Repl. chat" (replace chat). It is on by default but if you turn it off, your chat and your emotes (regardless of length) are suppressed after a punishment and are not replaced with a random emote. This is good for the case when you are using a renamer or a gag that is not from RealRestraint, as those cannot be suppressed by the collar. Keeping the switch on would add a dummy emote after everything you say through the renamer.


Tracking renamers

The second popular request was about renamers. RealRestraint gags and some other attachments are able to grab your redirected speech and say it on the public chat channel with another name than your own. For example, if you use a RR ball gag and use its "rename" function in the Gag plugin, you can rename yourself to whatever you want. If you enter "Pony", then whatever you say will be said by the gag under the name "Pony", be it direct chat or emotes.

But then, how does the Police Collar know it is you who's speaking ?

Simple, by letting the keyholder manage a list of names to monitor. By default, your user name and your display name are automatically monitored, meaning that if you speak under that name (or any of your attachments, for example a RR gag which renamer is not set), then the collar will detect that you are speaking and will punish you.

But the keyholder can add more names to that list and remove others (they can't remove the user name and the display name though, those are always monitored). They can do that either by entering the list by hand, with names separated by commas (","), or they can add or remove the name of the last attachment of yours that spoke at that time.


In the Speech menu, the keyholder can add a list of names, remove a list of names, set a list of names from scratch (remember, the display name of the wearer is always in the list, it can't be removed), say the list on the private chat, or add or remove the last speaking attachment for ease of use. If "monitored" appears after "Last speaker", this means that this attachment is already in the list.

For memory reasons, the list cannot contains more than 10 names, display name of the wearer not included. It will fail silently if you try to add more.

When your speech is suppressed and you try to speak or make a long emote, the collar will say a random emote instead, with the name that was used last time you were punished. That way, it will look like it is you who's making the emote.

For example, if your gag is set to name you "Pony" and you speak on the chat, your keyholder can just press the "Add last" button on the Speech menu and "Pony" will be added to the list if it is not already there. Next time you speak through that gag, the collar will know it's you and it will punish you. And then if you try to speak again, it will emote instead with the name "Pony", as if you were talking through your gag again (but it won't punish you for it this time).

There is a known limitation due to how the listener is managed. The collar can detect who is speaking only when the Speech restriction is set, otherwise the public listener is off to avoid unnecessarily listening to the chat (listening to public chat requires more script time if the area is busy and everyone is talking on the chat, even if you optimize the listener as much as you can). This means that when the speech is not monitored, when you are punished and your speech is temporarily restricted it will speak for you with your own name, as it cannot guess what name your gag or other renamer may be renaming you to.

When the sub is punished and her speech is momentarily suppressed, as I pointed out above the collar says a random emote on the chat instead... with the name of the last speaking attachment which name is monitored by the collar. Confusing ? Let me give you an example.

Suppose you are gagged and your gag renames you "Pony". If your speech is monitored by the collar and you speak on the chat and it punishes you, then your speech becomes suppressed for a few seconds until your vision is no longer blurry. If you speak during the speech suppression period, then instead of letting you speak or make a long emote, it will say an emote on the chat with the name "Pony". This name is the name of the last attachment of yours that spoke on the chat before the punishment (remember, "Pony" is the name of the gag when it speaks, not yours, and the gag is an attachment, not an avatar, yet it has to pretend to be one) and which name belongs to the list of monitored names. There may be others names, of course, depending on what your keyholder has written in it.

Problem is, if the speech is not monitored, the public listener is off, so the collar has no way to know that "Pony" has been speaking (nor should it care). But if you are punished for another reason, for example for being too far from your keyholder, your speech must be suppressed all the same, meaning that if you speak (through a gag or not), then that chat must be replaced with an emote... but with what name ? The gag does not know if you are speaking or if it is one of your attachments.

So all it does is tell all your worn RR gags "hey, gags, I'm taking over for now so be quiet" and redirect your chat to a particular channel temporarily. When you speak, it detects it and speaks for you on the public chat, either with a random emote or with your own emote if it is less than 20 characters long. If your speech was not monitored (i.e. if you are punished for any other reason), then it will not even try to guess what name you should be renamed to (because it can't know) and will just emote with your own avatar's display name. So don't be surprised if the renaming does not work all the time. It works well when the speech is monitored, and it does not work if it is not monitored, this is a known limitation.

You could ask "how about using the last name that was used by the sub in all circumstances ?", but in that case, what happens when the keyholder deactivates the speech monitoring while the sub was using a renamer, and had her name changed afterwards ? The collar wouldn't know since it wouldn't listen and it would still use the old name. It would be even more confusing than reverting back to the name of the avatar.


I have extended the penalties system of the speech monitoring to the other three monitors (relative position, absolute position and tampering). What I mean by that is that now when you get punished for the first time in a while, the punishment is light. The second one is harder and the third and subsequent ones are the hardest. Punishments are level 1 (lowest) to 3 (highest) but penalties can go over 3 so the more you get punished in a short time, the longest it takes to go back to  normal.

Every minute the "heat" goes down a notch until it reaches 1.

For example, if you are restricted to stay within a certain distance from a fixed position with a tolerance of 5 seconds, then the first time you step out of that area for more than 5 seconds you will be punished with a light zap (level 1). If you stay there for 5 more seconds, you will be zapped a second time with a medium zap (level 2). If you keep staying there you will get zapped at the highest level (level 3) every 5 seconds. And if you go back to the allowed area for 1 minute after having been zapped three times then step out again, you will get a medium zap again (and then high zaps while you stay out).

Unlike the speech monitoring, these penalties are not written in the menu because they are more like a dynamic way to choose the level of punishment, but they're there.


Until now, trying to struggle out automatically punishes the sub at each try. It is too deterministic so now the collar punishes only failed attempts, but successful attempts go unnoticed.

More over, there is now a switch in the Options menu named "Monit. Tamper.". If it is off, then the collar will not punish the sub for struggling at all.

Bug fixes

- We could get a "@clear" RLV command sent to a viewer with RLV inactive. I haven't seen or heard about this happen but it was possible in the code, so now it's conditioned by the detection of the RLV.

- The relative position monitoring did not work until at least one punishment was issued, if the keyholder was online but in another sim.

- The relative position monitoring did not work with a tolerance higher than 10 seconds.

- The default maximum distance in the absolute distance monitoring is now 20 m instead of 200 m. It was meant to be 20 m by default since the beginning (of course nothing keeps you from setting it back to 200 m manually).

- Fixed a typo when activating the Zapper.

Have fun !

Monday, December 24, 2018

Xmas gift - Sheer Camo Latex Catsuits !

Merry Christmas !

So a friend of mine asked me the other day to make sheer versions of the camo latex catsuits for her. I said ok, why not, that's a good idea... but why for you only ?

As a result, here are sheer camo latex catsuits for everyone ! Yes, for you too Ashe, since it was your idea in the first place :)

You can get them from the gift box at my shop in Pak, the box will stay there for two weeks starting today the 24th (*), so if you're a fan of catsuits, be sure to stop by and get yours !

If you are not familiar with the Maison De La Marquise Latex Catsuits, here is how you apply them :

- Wear the neck piece and one of the pairs of boots.
- If you're a Maitreya user, simply click on one of the buttons and choose the layer, and that's it.
- If you wear Proud Girls or other Lolas-compatible breasts, click on the "Bra" or "Top" buttons with a pink "L" underneath to apply the same textures to them as well.
- If you use another mesh body than Maitreya, for example Slink, you need it to be Omega-compatible and you can't use an Omega relay, since those do not relay materials. You click on one of the color buttons, then on the "Tattoo", "Inner" or "Outer" button.

Please note that although there is a neck piece and boots included, they are no-mod unlike the ones included in the retail versions of the catsuits. But if you own the latter, they work just the same and you can freely use them instead of the no-mod ones.

(*) So this means I will remove it Monday the 7th. Unless I forget or I'm too tied up, both of which being very likely.

PS : The military cap is not included. But if you like it, you can find it here.

Friday, December 21, 2018

Small update to the Need For Seed HUD

Hi !

Here is a small but long standing update for the Need For Seed HUD, which didn't have a "Clear" button to clean yourself up.

Now when you click on the red cross on the bottom right corner of the HUD, you also get to choose which layer to apply the invisible textures to Maitreya to clean your body (if you're a Maitreya user), and it loads the invisible textures to the two Omega scripts, making them ready to apply them on your body (if you're not a Maitreya user), exactly like all the other applier buttons. Then you can click on one of the Omega buttons, and/or one of the Lolas buttons (if you're using Lolas-compatible breasts like the Proud Girls), and you'll be clean again !

Please note that depending on what mesh head you use, you might have to use the Omega button several times, if you've applied cum to several layers. For example, if you've applied cum to the Lipstick and more cum to the Tattoo layers of your Lelutka mesh head, you will have to use the Omega button twice after clicking on the red cross. Once to clear the lipstick part and once to clear the tattoo part.

To update your Need For Seed HUD, simply rez the updater contained in the folder on the ground and wait, you will receive a new box a moment later. Leave the updater alone, it destroys itself after a while. Also no need to update the Feed Her Need For Seed HUD, this one is not impacted by this update at all, so no need to give a new copy to whoever you already gave a copy to.

Have fun !


Tuesday, December 18, 2018

RealRestraint update to v1.31

Hi !

Here is the latest update to v1.31 to all the products in the RealRestraint line, mostly with bug fixes but also with several interesting improvements.

There are many changes, but the main highlights of this update are :

- A fix for the RLV not always being detected upon login. I will explain below the reasons for this bug and the fix so that other designers may have an idea how to track and fix it in their own products too, because this is not restricted to RR.

- The RealRestraint_HUD object no longer being mandatory. This was a long-standing wish of mine, and to make the HUD optional was no trivial task, but now you will be able to completely do without it if you are using a viewer that implements RLV 2.9 completely (not Firestorm at the time of this writing, but the original RLV and Kokua do as well as several other viewers) and if your arms cuffs are not set to "Block". This will therefore let you save an attachment slot even if you are using a RR blindfold.

As for every RR update, you are given the choice between "update" and "replace".

"Update" means the updater merely updates some of the scripts contained inside the main object of your set (for example the right wrist cuff in the Police Handcuff set) and does not touch anything else. It may, depending on your product, add, remove or rename some items inside it but it won't change the shape of the object nor any texture, nothing.

"Replace" means that the product is deactivated, i.e. the contents inside its root prim are removed, and you are given a new one. This is the preferred option but it comes at the cost of having to resize it all again. There are some good news however : only the main object of your set is deactivated, the rest is untouched so you can still use the old secondary objects (left wrist cuff for example) with the new set you are given. This works... except if you are getting a replacement specifically to get new secondary items, of course. For example, if the update modifies the left wrist cuff, you will obviously not use the old left wrist cuff but the new one, which you will have to resize.

The update folder contains two scripts named "Copy Shape" and "Paste Shape", that you can use to transfer the shape of an old object to the corresponding new object. For example, if you don't want to adjust your new left wrist cuff because you've spent a long time adjusting the old one, you can drop the Copy Shape script in the old one and the Paste Shape script in the new one after putting them both on the ground, and if all goes well you will have very minor adjusting work to do, if at all (the scripts do some guesswork as to how each part of the new object has to adjust itself compared to its old counterpart, and it works perfectly unless other parts are too close in position, rotation and size). The way to use the scripts is described here, but I'm afraid the videos are broken because YouTube removed them for some reason and I didn't have a backup. I'll have to shoot them again soon.

So, should you update or replace ?

This is a difficult question and it depends entirely on what product(s) you are updating, what changes have occurred in this update for this product, and whether you really want such or such feature. If a feature requires a replacement but you really don't want to replace and you can do without the new feature, you can safely stick to a soft update.

This is why each feature below has a little code that indicates whether it requires an update or a replacement, and if it requires a replacement, it indicates whether you need to use the whole new set, or if you can use the main object of the new set and keep using the secondary objects of the old set. This is the case for updates that involve changes to scripts contained in a child prim of the main object (for example, a script inside the cuff part of the right wrist Police Handcuff, knowing that the root prim itself is actually an invisible cylinder). Here are the codes :

- "U" : You only need to soft-update, meaning choosing "UPDATE" while wearing your object, this is the nicest option for you.

- "G" : You need to soft-update but you must rez your object on the ground instead of wearing it because some some items inside it that are no-copy need to be updated, most likely animations. If you don't rez your object on the ground, the updater won't break it, it will just notify you that it could not replace some of its contents and that you'll have to retry.

- "R" : You need to have your main item replaced (for example, the right wrist cuff of a set of handcuffs), but you can keep using the older secondary items even though you received new ones, so you don't have to resize it all again. They are not deactivated upon replacement, only the main item is, and this particular enhancement does not break the link between both.

- "A" : You need to replace your whole set, even the secondary items are modified in this one, because this change impacts some or all the objects included in your set. If you keep using the old secondary items, chances are things won't work properly.

Attention, if you are updating your Restrained Elegance set, Police set or Vixen set, the table assumes that you have the mesh versions of them. If you don't, you will need to get a replacement in all cases.

Also, if your product, whatever it is, is v1.26 or below, you will need to replace it in all cases.

On top of the code explained above, each modification included in this update has its own unique identification, like A1, A2, B1 etc. In the table at the end of this post, you will find for each product (one per row) and for each modification (one per column) what choice is the best, update or replacement.

For example, modification "A1" (the fix for RLV not being detected) only requires a soft update ("U") regardless of the product you are updating.

A. All restraints

A1 (U) : Make sure the RLV is detected on log on every time.

This bug was weird and I suspect a change in the simulator software that happened a few months ago and that broke the ability of an object to speak on the chat while you log on. I mean, it had worked flawlessly for years before then. This also disturbs the ability of an object to detect your RLV, as it simply sends an owner message to your viewer and expects a response within a given time. But if the viewer cannot hear the message due to the object not sending it (but not knowing that it did not send it), the restraint waits for the response until it times out and decides there is no RLV on your side.

The fix is simply to send the RLV request once (that's llOwnerSay ("@version=xxxx") ) and then a second time 15 seconds later. In several months of testing, this has never failed to detect my RLV, even under heavy lag and/or with a very poor connection. So if you own a brand of products that need to detect the RLV of your users, I recommend you do it the same way : send one RLV version request at the moment the object rezzes, then another one if the first one times out, some time later. That way, if the RLV is detected right away, fine, the user cannot detach (for example) the product. Otherwise, the second request should act as a fail safe and avoid configuring your product for non-RLV usage while the user clearly has the RLV active and let them think there's a bug in your product.

A2 (U) : Make the RealRestraint HUD completely optional.

Without RLV, this HUD is used for 3 tasks :
- Block your clicks to prevent you from interacting with the environment (arms restraints only).
- Force you to stay in Mouselook by turning your screen black when you're in third person view (arms restraints only).
- Cover your screen with a more or less opaque prim (blindfolds only).

If your RLV implements the RLV API v2.9 (that's the version introducing vision restriction spheres used by blindfolds), and in the case of blindfolds if you set the Blindfold plugin to "Method: RLV" (because you have the choice there), then the restraint won't even rez a RealRestraint HUD anymore and if you are already wearing one, you will be able to detach it and it won't nag you for another one. But when you switch to "Method: HUD" (for blindfolds) or if you activate "Block" (for arms restraints), a HUD will be rezzed and will attach to your screen like before, and become non-detachable until those options are cleared.

This change therefore lets you spare one attachment slot by not wearing the RealRestraint HUD when it is not needed.

A3 (U) : The RealRestraint HUD used to update its own physical status once per second while seated. Not a big deal, but an unnecessary resource consumption nonetheless.

A4 (U) : You could be completely locked out from your own arms cuffs by doing the following :
- Turning /77 off.
- Restricting speaking on private channels, especially channel 77, thanks to the Control plugin.- Restricting "touch self" with the Touch plugin.
- Locking and setting a timer.

When the timer would end, the key would return to you but you wouldn't be able to access the menu of your cuffs.

The fix makes the main script send a signal to Control when the timer ends, and Control no longer restricts you if you have your own key and there is no timer set.

A5 (U) : RR API additions for third-party plugins.

- New link messages from Lockable :
  * -41 : Timer just ran out (ID field is irrelevant).
  * -42 : Timer was just set (ID field contains the time in seconds), also sent right after a -41.
  * -43 : Same as -21 but sent only on request with a "Data" link message sent to Lockable. The NUM field is different so a third-party plugin relying on -21 messages to count time will not be confused by one of them being sent on request from another plugin.

- New link messages to Lockable (strings are case-sensitive, don't include the quotes)) :
  * "Data" : Tells Lockable to resend its latest -21 link message, but with a -43 number instead.
  * "Names" : Tells lockable to resend its latest "Locks" message (not "ForceAnim" to avoid displaying an "Autoref" button on the main menu of a restraint that does not animate the avatar).
  * "Name" : Tells Lockable to set its keyholder display name to the one specified in the ID field. Attention, Lockable does not check that it matches the display name of the avatar whose UUID is the keyholder, you can set what you want.

- Specification of the -21 (and -43) link message sent by Lockable every 10 seconds (the new fields are Keyholder UUID and Name at the end, after a comma) :


- Aliases for "Lock", "Tie", "Unlock" and "Untie". Now when you send a "Cmd:Lock" link message to Lockable, it will work even in the case of a rope (which would expect a "Cmd:Tie" message). Same with "Unlock" and "Untie".

- Aliases for "Take keys", "Tighten", "Leave keys" and "Loosen". Same thing.

Please note that all that is explained above in this modification does not impact you as a user directly, but those changes are relevant to third-party plugin creators, so some of those third-party plugins may later issue updates that require you to update your RR products to v1.31. Don't worry though, if you're updating your RR products to get the other modifications and enhancements, you will get this one automatically too.

A6 (U) : Autolock sometimes forgot the names of the available locks until a reset. Now Autolock sends a "Names" link message (see modification A5 above) upon reset to request the list of locks from Lockable.

B. Blindfolds

B1 (U) : Locking to "Medium", "Thick" or "Opaque" then unlocking or locking to "Blurry", "Very thin", "Thin" or "Lock" used to clear most of the RLV restrictions but not all (for examples @shownames wasn't cleared). Now all of them are cleared as they should be.

C. Gags

C1 (U) : When turning Autorefresh off while wearing another RR gag, the former will do "as if" it were unlocked so that the other gag will animate your mouth, regardless of its type and lock (remember, RR gags negotiate among themselves to find out which one must garble and which one must animate so there is no conflict).

C2 (U) : Fixed the "Anim" field going blank which made the gag stop animating you until it was reset. This was due to another gag superseding this one and then being unworn before it.

C3 (R) : Ball gag & Ring gag : The neck piece is now non-detachable when the gag is just locked with "Lock". If this bothers you, you must detach the neck piece before the gag is locked.

C4 (U) : Added an "OOC" switch in the Gag plugin menu to allow Out-Of-Character chat when gagged (it is off by default). Attention : if you are using the original RLV, this fix requires that you use RLV or above, because prior versions would not let OOC go through at all (this was a bug that needed to be fixed urgently in the RLV, was released only a couple of days before this RR update).

C5 (U) : Now any "Total" lock takes precedence over any other lock in any other RR gag when it comes to garbling, to avoid cheating.

C6 (U) : Now "Typing" is no longer monitored when RLV is active. This is to avoid viewers like Radegast, which triggers the Typing animation even when the chat is redirected, from showing the world map continuously while typing when gagged.

C7 (G) : Deluxe Gag and the Ring Gag : The "Ringgag_Lelutka_Big" animation could be overridden on the upper right lip corner by other Bento animations.

C8 (A) : Deluxe Gag with Bridle : The Bridle would bring up the menu when touched, which was desired but allowed for cheating around /77 restrictions, so it has been removed. I have no idea if this fix was already live or not before this update, so I'm putting it here. Please test with your own Gag+Bridle combo before trying a replacement if you're not sure, by wearing both and clicking on the Bridle HUD. If you get the menu, then this modification is for you.

D. Restrained Elegance set

D1 (A) : The new Restrained Elegance set (the mesh one) was not compatible with Lockmeister at all, meaning it would not let chains spawn to some specific pieces of furniture.

D2 (A) : The particle chains should look better and tighter now on lower spec computers.

D3 (A) : The particle chains are now desaturated and no longer yellowish like before.

D4 (U) : Legs cuffs only : The Style plugin was not "per-lock" so setting the style to "invisible" in a lock would not let the ankle cuffs show again when unlocked.

D5 (A) : The engraving on the elbow cuffs would disappear when unlocked.

D6 (A) : The leash chains would not appear in u-shape.

D7 (A) : Keys reappeared on the secondary cuffs when reattaching them while the keys were taken (attach two cuffs, take the keys, detach the left one, reattach it, the key would reappear on it).

E. Serious Shackles set

E1 (A) : Same as D7.

F. Vixen set

F1 (U) : The "Deny" button was missing from the VixenTex plugin.

F2 (A) : Did a sanity pass on the particle chain scripts to make sure there is no conflict between the chains going between the cuffs and the ones going from the cuffs to pieces of furniture.

F3 (A) : A chain was missing in the "hands to collar" and "r-prayer" locks.

F4 (R) : Added a Style plugin to let you choose whether to hide or show the elbow cuffs in any lock or even unlocked (please note that you can still detach them at will in "Lock", regardless of the style you choose).

G. Police cuffs

G1 (A) : Added several rings hidden inside the wrists, elbows and ankle cuffs to let you adjust the cuffs to the rigged chains more easily if you don't want to stretch the cuffs too much. They're aligned with the rest of the chains so if you want to use them, you need to :

- Edit the cuff you wish to modify, check "Edit Linked" in the edit window.
- Cam inside your body (disable camera constraints if you have to, that's in the Advanced menu, Ctrl Alt D if you don't see it).
- Switch the ruler to "Local" instead of "Attachment" on the drop down list in the edit window.
- Click on the rings you want to move and move them out, aligning them with the rest.

You can see them on these pictures (I've made them glow in the pictures to emphasize them, but they don't glow in the retail product) :

Four rings in the left wrist cuff (four more in the right one too)

Four rings in the left elbow cuff (four more in the right one too)

Four rings in the left ankle cuff (you guessed it, four more in the right one as well)

Attention : This modification implies that since the number of prims changes, there is no way to port the times over the update, sorry about that.

G2 (A) : same as D7.

H. Police Collar

H1 (A) : Added a switch in the Zapper plugin to let the sub activate or deactivate the electric shocks, as some people might find it too hardcore or sadistic. The Zapper plugin is now deactivated by default, the sub has to activate it manually (if the collar is locked by someone else, the keyholder has an "Ask" button). Once activated and locked, the sub cannot deactivate it again until it is unlocked.

H2 (A) : Slightly increased the time for the blurriness effect to clear after being zapped.

H3 (U) : The Style plugin did not distinguish "Lock" and "Unlock".

I. All collars

I1 (U) : The Spy plugin didn't escape URLs, so regions with a space within their name would not give correct slurls.

J. Jammer

J1 (U) : The Jammer would not reset its target nickname upon owner change (you don't have to update your Jammer for this if you don't want to, you can simply reset it from the main menu and the nickname will be reset too).

Here is the table recapitulating all the features :

That's all ! This update is no way mandatory, but as you can see, there are a number of fixes and improvements that will make your life easier.

You can find an updater at the following places in-world :

My little shop

Dark Wishes

Roper's Dark Playground

Chorazin's main store

It looks like an orb floating above a pedestal, just click on it and follow the instructions.

Please note that Pak (where my little shop is) seems very laggy these days, I don't know why yet, and it interferes with the update process. I recommend you try one of the other three slurls in priority. Chorazin's place is the least laggy of all.

Have fun and Merry Christmas in advance !