Search the Community
Showing results for tags 'Leash'.
-
Leash Framework View File Framework that allows you to attach REAL leashes to NPC's and either have them guide you around, or you guide them. No real limitation, you can make a huge train if you wanted. I'm releasing this in it's current beta state! I've yet to find any serious bugs, but I do want to gauge the community to see if this mod is worth continuing further or expanding upon. Important Note This is a FRAMEWORK. NPC's are expected to have AI packages with locomotion. If you try to use it on an NPC who is leaning against a wall, playing an animation, guarding the whiterun gate - this mod ~WILL NOT~ make them follow. Your mod is also expected to equip the leash. Features Rich Papyrus API for connecting actors together in any order you will Advanced physics system that takes full advantage of HAVOK Easy to use debug menu for testing, or just using the mod freely Zero package interruption, this mod has it's own built-in AI system, pathfinder, and locomotion system. Your mod's packages will never be touched! Full support for the player actor, other actors, etc. No animal support yet, although that wouldn't be difficult Contains two test leashes by @kzrp to mess around with Supports ANY/ALL leashes, they just need a series of bones for this mod to move around! This means that all the chain collars in devious devices are fully compatible! How to use (Without Papyrus API) Enough the leash to the actor (Or a leash, it can be any leash like from devious devices) Go into the SKSE Mod Menu using `f1`, find this mod. Open `Debug`. Select the leasher, and the leashed. Leasher MUST have that leash equipped, the mod doesn't do it for you - stop being lazy The parent bone is `NPC Spine2 [Spn2]` for the included leash. This can be any parent of the chain bones, even just NPC The `Leash Bone Match` is `Leash1` for the included leash. This is the prefix of the bones (or common name) in your leash Select a minimum distance, like ~200+. Don't go too low or it'll be fucked. `Persistent` means it'll persist with your save. Click `Leash actor` Enjoy (Note: Make sure the collar/leash is equipped to the actor, this mod doesn't auto equip it) For a funnier experience, go into `Settings` and enable `Forced recovery for NPCs`. This will rag doll the actor once they exceed the distance threshold. Works well! Known issues/limitations An actor can get stuck obviously. The less bones in the leash, the more fucked it'll be when stretching a long distance Requirements Skyrim SE/AE (Doubt VR support works, this required a lot of reverse engineering) SKSE Mod Menu Framework (Optional for the mod menu) Papyrus API Scriptname LeashFramework Hidden ;/ Active leash factions supplied by Leash.esm: - LeashedFaction (form ID 0x000D6A): contains actors that currently have an active leash. - LeasherFaction (form ID 0x000D6B): contains actors that currently hold one or more active leashes. Leash lifecycle mod events: - LeashFramework_OnLeash: sent when a leash is successfully applied, replaced, or restored from a save. - LeashFramework_OnUnleash: sent when a leash is disconnected, removed by UnleashAll, or replaced. Both lifecycle events use the leashed Actor as sender and set numArg to 0.0. strArg describes why the event was sent. OnLeash uses "applied", "replaced", or "loaded". OnUnleash uses "disconnected", "unleashAll", or "replaced". Replacing a leash sends OnUnleash before OnLeash. Internal state cleanup while starting or loading a game does not send OnUnleash. Pull mod events: - LeashFramework_OnActorPulled: sent once when normal direct-locomotion pulling starts. - LeashFramework_OnActorRagdollPulled: sent once when forced ragdoll pulling starts. Register for these events with RegisterForModEvent. Both pull events use the leashed Actor as sender, leave strArg empty, and provide the holder/anchor-to-collar distance at the transition in numArg. A pull event can be sent again only after that pull mode stops and later starts again; it is not sent every frame while pulling remains active. /; ;/ Connects a leash from a holder's right hand to leash bones on another actor. holder: Actor holding the leash. The current attachment bone is NPC R Hand [RHnd]. leashed: Actor wearing the leash mesh. An actor can have only one active leash. parentBone: Exact node name to find on the leashed actor before searching its descendants. leashBoneMatch: Text found anywhere in each ordered leash bone name beneath parentBone. For example, Main_ matches hdtSSEPhysics_AutoRename_Armor_00000004 Main_01 after SMP renames the node. minLength: Distance where active leash pulling stops. Must be zero or greater. maxLength: Maximum holder-to-collar distance. Must be positive and at least minLength. persistent: When true, the leash is saved and restored until explicitly disconnected. Applying another leash to the same leashed actor replaces its current leash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeash(Actor holder, Actor leashed, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent) Global Native ;/ Connects a leash from either hand on a holder to leash bones on another actor and applies the closed-fist grip. rightHand: When true, uses NPC R Hand [RHnd]. When false, uses NPC L Hand [LHnd]. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashToHand(Actor holder, Actor leashed, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Bool rightHand = True) Global Native ;/ Connects a leash from an exact bone on a holder to leash bones on another actor. holderBone: Exact node name on the holder. This attachment does not alter the holder's hand pose. offsetX, offsetY, offsetZ: Optional local-space offset from holderBone. The offset follows the bone's translation, rotation, and scale, but does not add an attachment rotation. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashToBone(Actor holder, Actor leashed, String holderBone, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Float offsetX = 0.0, Float offsetY = 0.0, Float offsetZ = 0.0) Global Native ;/ Connects a leash mesh equipped by the holder to an exact bone on the leashed actor. The first ordered leash bone remains in its neutral animated pose on the holder. The last ordered leash bone attaches to leashedAttachmentBone. leashParentBone: Exact node name to find on the holder before searching its descendants for leash bones. leashedAttachmentBone: Exact node name on the leashed actor. attachmentOffsetX, attachmentOffsetY, attachmentOffsetZ: Optional local-space offset from leashedAttachmentBone. The offset follows the bone's translation, rotation, and scale, but does not add an attachment rotation. closedHand: Applies the closed-fist pose to the holder. 1 closes the right hand, 2 closes the left hand, and every other value leaves both hands unchanged. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyHolderOwnedLeashToBone(Actor holder, Actor leashed, String leashedAttachmentBone, String leashParentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Float attachmentOffsetX = 0.0, Float attachmentOffsetY = 0.0, Float attachmentOffsetZ = 0.0, Int closedHand = 0) Global Native ;/ Connects a holderless leash from a fixed position to leash bones on an actor. anchorCell: Cell containing the world-space position. It must correspond to the supplied coordinates. x, y, z: Fixed world-space coordinates of the leash anchor. All other arguments and replacement behavior match ApplyLeash. Pull distances are measured from the fixed anchor instead of a holder. World-position leashes do not assign LeasherFaction, have no result from GetLeashHolder, and do not use holder teleport recovery. Use DisconnectLeash(None, leashed) to disconnect one. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashAtPosition(Actor leashed, Cell anchorCell, Float x, Float y, Float z, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent) Global Native ;/ Disconnects the leash matching the specific holder and leashed actor. holder: Actor holding the leash. Pass None for a holderless world-position leash. leashed: Actor connected as the leashed endpoint. Returns true when the matching leash was disconnected. /; Bool Function DisconnectLeash(Actor holder, Actor leashed) Global Native ;/ Disconnects every leash where actor is either the holder or the leashed actor. Returns true when at least one leash was disconnected. /; Bool Function UnleashAll(Actor actor) Global Native ;/ Returns true when actor currently has an active leash. /; Bool Function IsLeashed(Actor actor) Global Native ;/ Returns true when actor currently holds at least one active leash. /; Bool Function IsLeashHolder(Actor actor) Global Native ;/ Returns the actor holding leashed's active leash, or None when the leash is holderless or absent. /; Actor Function GetLeashHolder(Actor leashed) Global Native ;/ Returns every actor currently leashed to holder. Returns an empty array when holder has no active leashes. /; Actor[] Function GetLeashedActors(Actor holder) Global Native ;/ Returns the minimum length of leashed's active leash, or -1.0 when leashed has no active leash. /; Float Function GetMinLeashLength(Actor leashed) Global Native ;/ Returns the maximum length of leashed's active leash, or -1.0 when leashed has no active leash. /; Float Function GetMaxLeashLength(Actor leashed) Global Native ;/ Sets the minimum length of leashed's active leash. newLength must be zero or greater and cannot exceed the current maximum length. Returns false when leashed has no active leash or newLength is invalid. /; Bool Function SetMinLeashLength(Actor leashed, Float newLength) Global Native ;/ Sets the maximum length of leashed's active leash. newLength must be positive and cannot be less than the current minimum length. Returns false when leashed has no active leash or newLength is invalid. /; Bool Function SetMaxLeashLength(Actor leashed, Float newLength) Global Native Future todos: Allow attaching the rope to specific bones rather than just the right hand Add explicit API to disable walking control (For now just set minLength/maxLength to high numbers so it never triggers) Known issues: Actors can get stuck on objects like doors rarely Some chains may not converge well (Gaps) - increase the solve iterations in the SKSE Mod Menu Actors wont follow you between load doors (Not a problem, lack of a feature) Source code: https://github.com/asdasdduck/Skyrim-Leash-Framework Submitter asdt123123 Submitted 07/28/26 Category Adult Mods Requirements Regular Edition Compatible Install Instructions
-
LoreFriendlyToys View File This is an addon for Devious Devices NG. The goal of this mod is to add more immersion to the game by adding some limitations to the vanilla mechanics and adding some lore-friendly restraints and some game mechanics and effects. This mod is mainly a modders ressource but you can use tools like modex to get the assets into your game without a mod that utilizes the assets (like Maria Eden). A detailed documentation is in the zip file (LoreFriendlyToys.md) Dependencies Devious Devices NG Leash Framework powerofthree's Tweaks PapyrusUtil SE - is implicit provided by Sexlab Assets black cloth blindfold red cloth blindfold iron collar leather collar with chains black leather collar white leather collar simple leather collar strangulation collar rope collar iron handcuffs iron legcuffs rope handcuffs rope legcuffs rope collar simple yoke a gag that can be plugged a version of HRs painful slave heels with a heels progression system. leather collar with cow bell - your enemies will love this collar! (Thank you Predator-RJ@loverslab) Broom plug (Thank you pchs@loverslab) Carrot plug (Thank you pchs@loverslab) Lantern plug (Thank you pchs@loverslab) Torch plug (Thank you pchs@loverslab) Wooden Leash pole (Thank you Audhol@loverslab) Stone Leash pole (Thank you Audhol@loverslab) Wall leash (Thank you Audhol@loverslab) Heels progression enchantment (LFT_HighHeelEnch) This is an Enchantment for High Heels that makes wearing the heels more immersive. At the beginning the actor will stumble a lot, over the time the actor get used to the heels. Progression levels Novice - the actor stumbles very often, especially if he moves fast or jumps Competence - the actor stumbles less often Expert - the actor stumbles even less Master - the actor stumbles lesser than less Goddess - the actor stumbles almost never Heels categories The NIOverride height of the heels and the influences how fast the actor progress through the levels and how often the actor stumbles. fake heels - height up to 2 - no progress at all while wearing such heels, no limitations, no stumbling light heels - up to 5 - slow progress, minor speed limitation based on progression level, stumble occurs sometimes. average heels - up to 10 - normal progress, speed limitation based on progression level. But 100% speed can never be reached with such heels. extreme heels - higher than 10 - progressing is fast, but at the beginning the speed limitations are very high and stumbling occurs often. Even with maximum progression level, speed remains quite limited Walking speed The walking speed influences how often the actor stumbles. If the actor walks very slowly, the chance to stumble is almost zero. Jumping Jumping with heels increases the chance to stumble a lot - up to 100%. Faction The progression is reflected in the faction LFT_HeelsProgressionFaction - Rank 0 is Novice... Special heels (Pain heels) There is a special enchantment LFT_PainHeelEnch which mainly does the same as LFT_HighHeelEnch but adds additional effects to the wearer like stamina and heal damage. LFT_SlavePainHeels_Inventory is an example of such heels - which is just a proxy for DD HR Iron Boots with additonal effects. Customization Some values can be configured in Data\SKSE\Plugins\StorageUtilData\LoreFriendlyToys.json: { "int" : { "heels_stepslevel1": 100, "heels_stepslevel2": 200, "heels_stepslevel3": 500, "heels_stepslevel3": 800, "heels_speed_slow": 60, "heels_speed_average": 30, "heels_minimum_steps_before_stumble": 20, "heels_sneak_damage": 50, "heels_stumble_health_damage": 5 } } stepslevel are the base amount of steps you have to walk until you progress. The heel category influences this limit - the lower the heel the more steps are needed. speed_slow is the amount of milliseconds between two steps - the higher you set this value, the slower you have to walk to avoid stumbling. speed_average is same as above and considered as normal walk, sometimes you stumble. minimum_steps_before_stumble is the amount of steps you always can walk before you might stumble again, it is doubled for light heels. sneak damage is a damage % value for non-fake heels. health damage defines how much your health being hit when you stumble - this is only applied when your hands are bound as you can't protect yourself with bound hands. Mod event A mod event is sent when an actor stumbles. Example: RegisterForModEvent("LFT_Stumble", "OnStumble") function OnStumble(Form victim, int heelsRank, int stepsSinceLastStumble) ... endfunction Leash System Leashes Leashes are loose chains equipped at amulet slot (35): LFT_LeashChainShort - 50-100 units long LFT_LeashChainMedium - 80-120 units long LFT_LeashChainLong - 120-180 units long They have the keyword LFT_WornLeashChain and occupies slot 35 (amulet). Leash Collar LFT_LeashCollar_Rendered - collar with a ring LFT_LeashCollar_Inventory - inventory object There could be collars with chains permanently attached to the collar - then the collar has both keywords LFT_WornLeashCollar and LFT_WornLeashChain. Otherwhise the collar has just the keyword LFT_WornLeashCollar and occupies slot 45 (neck). Leash Anchor Object The leash anchor is an activator object that can be placed in the game world and used to leash actors to it. A leashed actor is in faction LFT_LeashedToAnchorFaction. If an leashed anchor is occupied by another actor, the anchor has the keyword LFT_LeashAnchorOccupiedKeyword. The activation of a leash anchor can be done by either a leash holder or the leashed actor. There is a Formlist LFT_LeashAnchorList available that you can use in search conditions and find package routines. Types LFT_LeashPostStone - small stone post with a ring LFT_LeashPostStoneShort - small stone post with a ring with a short leash LFT_LeashPostStoneLong - small stone post with a ring with a long leash LFT_LeashPostWood - wooden post with a ring LFT_LeashPostWoodShort - wooden post with a ring with a short leash LFT_LeashPostWoodLong - wooden post with a ring with a long leash LFT_LeashRing - a ring to attach to a wall or another object (disable havok!) LFT_LeashRingShort - a ring to attach to a wall or another object with a short leash (disable havok!) LFT_LeashRingLong - a ring to attach to a wall or another object with a long leash (disable havok!) Rules for activating the leash anchor if actor wears a leash collar (LFT_LeashCollar_Rendered) - it will be re-used. If not, it will be equipped. if an actor wears a different collar, it will be stashed and restored after the actor is unleashed. if the actor is a leash holder, not himself but the first leashed actor is transferred if the anchor is occupied if the actor wears a leash collar, he replaces the actual leashed actor else the actor becomes leash holder of the actual leashed actor if the actor already has a leash equipped (LFT_LeashChain...), it is being re-used if the actor as a differen leash or leash collar equipped, it is stashed and restored when the actor gets unleashed or handed over to a leash holder Rules while being leashed to an anchor the leashed actor is in faction LFT_LeashedToAnchorFaction teleport is disabled if leashed actor is the Player the anchor reference has the keyword LFT_LeashAnchorOccupiedKeyword Rules for unleashing the leash anchor the leashed actor cannot unleash himself when he wears a DD binder (zad_DeviousArmbinder) he doesn't have the key zad_RestraintsKey the leash (LFT_LeashChain...) is detached and removed from the leashed actor another actor can unleash the leashed actor (leash handover) a stashed DD collar will be restored Mod properties Read only properties previousCollar - DD collar that was stashed previousLeash - leash that was stashed victim - Leashed actor Customizable properties attachPointX - relative X position of the attachment point attachPointY - relative Y position of the attachment point attachPointZ - relative Z position of the attachment point defaultLeashCollar - DD collar (inventory item) that will be equipped - LFT_LeashCollar_Inventory is default defaultLeash - leash that will be equipped (LFT_LeashChain...) - LFT_LeashChainMedium is default Footstep sets There are several footstep sets installed with this mod. They can be assigend to Armor addons in order to change the footstep sounds of the worn armor. You can use SkyPatcher or Sound Record Distributor in order to assign the footstep sets to Armor addons dynamically or use SetFootstepSet from PO3_SKSEFunctions. In the past, mods used magic effects and tracked animation events to add sound effects to armor. That did not work reliable and especially not on NPCS. Footstep sets provided by this mod LFT_BrassBellsFootstepSet - brass bells sound, often used for indish styled ankle bells LFT_ChainFootstepSet - heavy chain sound, often used for shackles and chain leashes LFT_SmallBellsFootstepSet - tiny bells, often used for piercings LFT_SqueakingFootstepSet - squeaking sound Factions LFT_HeelsProgressionFaction - see above LFT_LeashedToAnchorFaction - see above Armor Keywords LFT_Appearance_PonyGear - can be applied to pony play armor LFT_WornGagPlug - plug of a pluggable gag LFT_WornPluggableGag - a pluggable gag LFT_WornLeashChain - actor wears a leash chain LFT_Property_Humiliating - armor is humiliating LFT_Property_Humiliating_Collar - collar is humiliating LFT_Property_Humiliating_Gag - gag is humiliating LFT_Property_Humiliating_Nipples - nipple clamps are humiliating LFT_Property_HumiliatingPlug - anal or vaginal plugs are humiliating LFT_Property_TimedDeadly - wearing this armor will kill the actor Item keywords LFT_LeashAnchorKeyword - see above LFT_LeashAnchorOccupiedKeyword - see above Sound effects Most sound effects are taken from https://opennsfw.carrd.co/. The license can be found there as well. LFT_AMBCrowdSound - ambient crowd sound LFT_AMBFemaleTortureSound - ambient female torture sound LFT_AMBFetishSexSound - ambient fetish sound LFT_AMBSexSound - ambient sex sound LFT_ShavingSound - shaving sound LFT_Stumble - stumble sound LFT_CowBellSound - cow bell sound LFT_BurningSound - burning sound LFT_CageOpenSound - cage open sound LFT_CageCloseSound - cage close sound LFT_PeeInMouthSound - pee in mouth sound LFT_PeeInPampasSound - pee in pampas sound LFT_FurnitureLockSound - furniture lock sound LFT_FurnitureUnlockSound - furniture unlock sound LFT_GlideInSound - glide in sound LFT_GlideOutSound - glide out sound LFT_GulpSound - gulp sound LFT_MetalSqueakingSound - metal squeaking sound LFT_DrippingFastSound - dripping fast sound LFT_DrippingSlowSound - dripping slow sound LFT_FemaleBreathingSound - female breathing sound LFT_LubriciousSound - lubricious sound LFT_MaleBreathingSound - male breathing sound (and many more)... Submitter zaira Submitted 09/21/22 Category Adult Mods Requirements Devious Devices SE >= 5.2 , Devious Devices NG >= 4, Leash Framework, SlaveTats >= 1.3.9, powerofthree's Tweaks Regular Edition Compatible No Install Instructions
- 59 replies
-
- bondage
- devious devices
-
(and 2 more)
Tagged with:
-
Version 2026-08-22
13474 downloads
This is an addon for Devious Devices NG. The goal of this mod is to add more immersion to the game by adding some limitations to the vanilla mechanics and adding some lore-friendly restraints and some game mechanics and effects. This mod is mainly a modders ressource but you can use tools like modex to get the assets into your game without a mod that utilizes the assets (like Maria Eden). A detailed documentation is in the zip file (LoreFriendlyToys.md) Dependencies Devious Devices NG Leash Framework powerofthree's Tweaks PapyrusUtil SE - is implicit provided by Sexlab Assets black cloth blindfold red cloth blindfold iron collar leather collar with chains black leather collar white leather collar simple leather collar strangulation collar rope collar iron handcuffs iron legcuffs rope handcuffs rope legcuffs rope collar simple yoke a gag that can be plugged a version of HRs painful slave heels with a heels progression system. leather collar with cow bell - your enemies will love this collar! (Thank you Predator-RJ@loverslab) Broom plug (Thank you pchs@loverslab) Carrot plug (Thank you pchs@loverslab) Lantern plug (Thank you pchs@loverslab) Torch plug (Thank you pchs@loverslab) Wooden Leash pole (Thank you Audhol@loverslab) Stone Leash pole (Thank you Audhol@loverslab) Wall leash (Thank you Audhol@loverslab) Heels progression enchantment (LFT_HighHeelEnch) This is an Enchantment for High Heels that makes wearing the heels more immersive. At the beginning the actor will stumble a lot, over the time the actor get used to the heels. Progression levels Novice - the actor stumbles very often, especially if he moves fast or jumps Competence - the actor stumbles less often Expert - the actor stumbles even less Master - the actor stumbles lesser than less Goddess - the actor stumbles almost never Heels categories The NIOverride height of the heels and the influences how fast the actor progress through the levels and how often the actor stumbles. fake heels - height up to 2 - no progress at all while wearing such heels, no limitations, no stumbling light heels - up to 5 - slow progress, minor speed limitation based on progression level, stumble occurs sometimes. average heels - up to 10 - normal progress, speed limitation based on progression level. But 100% speed can never be reached with such heels. extreme heels - higher than 10 - progressing is fast, but at the beginning the speed limitations are very high and stumbling occurs often. Even with maximum progression level, speed remains quite limited Walking speed The walking speed influences how often the actor stumbles. If the actor walks very slowly, the chance to stumble is almost zero. Jumping Jumping with heels increases the chance to stumble a lot - up to 100%. Faction The progression is reflected in the faction LFT_HeelsProgressionFaction - Rank 0 is Novice... Special heels (Pain heels) There is a special enchantment LFT_PainHeelEnch which mainly does the same as LFT_HighHeelEnch but adds additional effects to the wearer like stamina and heal damage. LFT_SlavePainHeels_Inventory is an example of such heels - which is just a proxy for DD HR Iron Boots with additonal effects. Customization Some values can be configured in Data\SKSE\Plugins\StorageUtilData\LoreFriendlyToys.json: { "int" : { "heels_stepslevel1": 100, "heels_stepslevel2": 200, "heels_stepslevel3": 500, "heels_stepslevel3": 800, "heels_speed_slow": 60, "heels_speed_average": 30, "heels_minimum_steps_before_stumble": 20, "heels_sneak_damage": 50, "heels_stumble_health_damage": 5 } } stepslevel are the base amount of steps you have to walk until you progress. The heel category influences this limit - the lower the heel the more steps are needed. speed_slow is the amount of milliseconds between two steps - the higher you set this value, the slower you have to walk to avoid stumbling. speed_average is same as above and considered as normal walk, sometimes you stumble. minimum_steps_before_stumble is the amount of steps you always can walk before you might stumble again, it is doubled for light heels. sneak damage is a damage % value for non-fake heels. health damage defines how much your health being hit when you stumble - this is only applied when your hands are bound as you can't protect yourself with bound hands. Mod event A mod event is sent when an actor stumbles. Example: RegisterForModEvent("LFT_Stumble", "OnStumble") function OnStumble(Form victim, int heelsRank, int stepsSinceLastStumble) ... endfunction Leash System Leashes Leashes are loose chains equipped at amulet slot (35): LFT_LeashChainShort - 50-100 units long LFT_LeashChainMedium - 80-120 units long LFT_LeashChainLong - 120-180 units long They have the keyword LFT_WornLeashChain and occupies slot 35 (amulet). Leash Collar LFT_LeashCollar_Rendered - collar with a ring LFT_LeashCollar_Inventory - inventory object There could be collars with chains permanently attached to the collar - then the collar has both keywords LFT_WornLeashCollar and LFT_WornLeashChain. Otherwhise the collar has just the keyword LFT_WornLeashCollar and occupies slot 45 (neck). Leash Anchor Object The leash anchor is an activator object that can be placed in the game world and used to leash actors to it. A leashed actor is in faction LFT_LeashedToAnchorFaction. If an leashed anchor is occupied by another actor, the anchor has the keyword LFT_LeashAnchorOccupiedKeyword. The activation of a leash anchor can be done by either a leash holder or the leashed actor. There is a Formlist LFT_LeashAnchorList available that you can use in search conditions and find package routines. Types LFT_LeashPostStone - small stone post with a ring LFT_LeashPostStoneShort - small stone post with a ring with a short leash LFT_LeashPostStoneLong - small stone post with a ring with a long leash LFT_LeashPostWood - wooden post with a ring LFT_LeashPostWoodShort - wooden post with a ring with a short leash LFT_LeashPostWoodLong - wooden post with a ring with a long leash LFT_LeashRing - a ring to attach to a wall or another object (disable havok!) LFT_LeashRingShort - a ring to attach to a wall or another object with a short leash (disable havok!) LFT_LeashRingLong - a ring to attach to a wall or another object with a long leash (disable havok!) Rules for activating the leash anchor if actor wears a leash collar (LFT_LeashCollar_Rendered) - it will be re-used. If not, it will be equipped. if an actor wears a different collar, it will be stashed and restored after the actor is unleashed. if the actor is a leash holder, not himself but the first leashed actor is transferred if the anchor is occupied if the actor wears a leash collar, he replaces the actual leashed actor else the actor becomes leash holder of the actual leashed actor if the actor already has a leash equipped (LFT_LeashChain...), it is being re-used if the actor as a differen leash or leash collar equipped, it is stashed and restored when the actor gets unleashed or handed over to a leash holder Rules while being leashed to an anchor the leashed actor is in faction LFT_LeashedToAnchorFaction teleport is disabled if leashed actor is the Player the anchor reference has the keyword LFT_LeashAnchorOccupiedKeyword Rules for unleashing the leash anchor the leashed actor cannot unleash himself when he wears a DD binder (zad_DeviousArmbinder) he doesn't have the key zad_RestraintsKey the leash (LFT_LeashChain...) is detached and removed from the leashed actor another actor can unleash the leashed actor (leash handover) a stashed DD collar will be restored Mod properties Read only properties previousCollar - DD collar that was stashed previousLeash - leash that was stashed victim - Leashed actor Customizable properties attachPointX - relative X position of the attachment point attachPointY - relative Y position of the attachment point attachPointZ - relative Z position of the attachment point defaultLeashCollar - DD collar (inventory item) that will be equipped - LFT_LeashCollar_Inventory is default defaultLeash - leash that will be equipped (LFT_LeashChain...) - LFT_LeashChainMedium is default Footstep sets There are several footstep sets installed with this mod. They can be assigend to Armor addons in order to change the footstep sounds of the worn armor. You can use SkyPatcher or Sound Record Distributor in order to assign the footstep sets to Armor addons dynamically or use SetFootstepSet from PO3_SKSEFunctions. In the past, mods used magic effects and tracked animation events to add sound effects to armor. That did not work reliable and especially not on NPCS. Footstep sets provided by this mod LFT_BrassBellsFootstepSet - brass bells sound, often used for indish styled ankle bells LFT_ChainFootstepSet - heavy chain sound, often used for shackles and chain leashes LFT_SmallBellsFootstepSet - tiny bells, often used for piercings LFT_SqueakingFootstepSet - squeaking sound Factions LFT_HeelsProgressionFaction - see above LFT_LeashedToAnchorFaction - see above Armor Keywords LFT_Appearance_PonyGear - can be applied to pony play armor LFT_WornGagPlug - plug of a pluggable gag LFT_WornPluggableGag - a pluggable gag LFT_WornLeashChain - actor wears a leash chain LFT_Property_Humiliating - armor is humiliating LFT_Property_Humiliating_Collar - collar is humiliating LFT_Property_Humiliating_Gag - gag is humiliating LFT_Property_Humiliating_Nipples - nipple clamps are humiliating LFT_Property_HumiliatingPlug - anal or vaginal plugs are humiliating LFT_Property_TimedDeadly - wearing this armor will kill the actor Item keywords LFT_LeashAnchorKeyword - see above LFT_LeashAnchorOccupiedKeyword - see above Sound effects Most sound effects are taken from https://opennsfw.carrd.co/. The license can be found there as well. LFT_AMBCrowdSound - ambient crowd sound LFT_AMBFemaleTortureSound - ambient female torture sound LFT_AMBFetishSexSound - ambient fetish sound LFT_AMBSexSound - ambient sex sound LFT_ShavingSound - shaving sound LFT_Stumble - stumble sound LFT_CowBellSound - cow bell sound LFT_BurningSound - burning sound LFT_CageOpenSound - cage open sound LFT_CageCloseSound - cage close sound LFT_PeeInMouthSound - pee in mouth sound LFT_PeeInPampasSound - pee in pampas sound LFT_FurnitureLockSound - furniture lock sound LFT_FurnitureUnlockSound - furniture unlock sound LFT_GlideInSound - glide in sound LFT_GlideOutSound - glide out sound LFT_GulpSound - gulp sound LFT_MetalSqueakingSound - metal squeaking sound LFT_DrippingFastSound - dripping fast sound LFT_DrippingSlowSound - dripping slow sound LFT_FemaleBreathingSound - female breathing sound LFT_LubriciousSound - lubricious sound LFT_MaleBreathingSound - male breathing sound (and many more)...-
39
-
- bondage
- devious devices
-
(and 2 more)
Tagged with:
-
Version 1.1.1
4173 downloads
Framework that allows you to attach REAL leashes to NPC's and either have them guide you around, or you guide them. No real limitation, you can make a huge train if you wanted. I'm releasing this in it's current beta state! I've yet to find any serious bugs, but I do want to gauge the community to see if this mod is worth continuing further or expanding upon. Important Note This is a FRAMEWORK. NPC's are expected to have AI packages with locomotion. If you try to use it on an NPC who is leaning against a wall, playing an animation, guarding the whiterun gate - this mod ~WILL NOT~ make them follow. Your mod is also expected to equip the leash. Features Rich Papyrus API for connecting actors together in any order you will Advanced physics system that takes full advantage of HAVOK Easy to use debug menu for testing, or just using the mod freely Zero package interruption, this mod has it's own built-in AI system, pathfinder, and locomotion system. Your mod's packages will never be touched! Full support for the player actor, other actors, etc. No animal support yet, although that wouldn't be difficult Contains two test leashes by @kzrp to mess around with Supports ANY/ALL leashes, they just need a series of bones for this mod to move around! This means that all the chain collars in devious devices are fully compatible! How to use (Without Papyrus API) Enough the leash to the actor (Or a leash, it can be any leash like from devious devices) Go into the SKSE Mod Menu using `f1`, find this mod. Open `Debug`. Select the leasher, and the leashed. Leasher MUST have that leash equipped, the mod doesn't do it for you - stop being lazy The parent bone is `NPC Spine2 [Spn2]` for the included leash. This can be any parent of the chain bones, even just NPC The `Leash Bone Match` is `Leash1` for the included leash. This is the prefix of the bones (or common name) in your leash Select a minimum distance, like ~200+. Don't go too low or it'll be fucked. `Persistent` means it'll persist with your save. Click `Leash actor` Enjoy (Note: Make sure the collar/leash is equipped to the actor, this mod doesn't auto equip it) For a funnier experience, go into `Settings` and enable `Forced recovery for NPCs`. This will rag doll the actor once they exceed the distance threshold. Works well! Known issues/limitations An actor can get stuck obviously. The less bones in the leash, the more fucked it'll be when stretching a long distance Requirements Skyrim SE/AE (Doubt VR support works, this required a lot of reverse engineering) SKSE Mod Menu Framework (Optional for the mod menu) Papyrus API Scriptname LeashFramework Hidden ;/ Active leash factions supplied by Leash.esm: - LeashedFaction (form ID 0x000D6A): contains actors that currently have an active leash. - LeasherFaction (form ID 0x000D6B): contains actors that currently hold one or more active leashes. Leash lifecycle mod events: - LeashFramework_OnLeash: sent when a leash is successfully applied, replaced, or restored from a save. - LeashFramework_OnUnleash: sent when a leash is disconnected, removed by UnleashAll, or replaced. Both lifecycle events use the leashed Actor as sender and set numArg to 0.0. strArg describes why the event was sent. OnLeash uses "applied", "replaced", or "loaded". OnUnleash uses "disconnected", "unleashAll", or "replaced". Replacing a leash sends OnUnleash before OnLeash. Internal state cleanup while starting or loading a game does not send OnUnleash. Pull mod events: - LeashFramework_OnActorPulled: sent once when normal direct-locomotion pulling starts. - LeashFramework_OnActorRagdollPulled: sent once when forced ragdoll pulling starts. Register for these events with RegisterForModEvent. Both pull events use the leashed Actor as sender, leave strArg empty, and provide the holder/anchor-to-collar distance at the transition in numArg. A pull event can be sent again only after that pull mode stops and later starts again; it is not sent every frame while pulling remains active. /; ;/ Connects a leash from a holder's right hand to leash bones on another actor. holder: Actor holding the leash. The current attachment bone is NPC R Hand [RHnd]. leashed: Actor wearing the leash mesh. An actor can have only one active leash. parentBone: Exact node name to find on the leashed actor before searching its descendants. leashBoneMatch: Text found anywhere in each ordered leash bone name beneath parentBone. For example, Main_ matches hdtSSEPhysics_AutoRename_Armor_00000004 Main_01 after SMP renames the node. minLength: Distance where active leash pulling stops. Must be zero or greater. maxLength: Maximum holder-to-collar distance. Must be positive and at least minLength. persistent: When true, the leash is saved and restored until explicitly disconnected. Applying another leash to the same leashed actor replaces its current leash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeash(Actor holder, Actor leashed, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent) Global Native ;/ Connects a leash from either hand on a holder to leash bones on another actor and applies the closed-fist grip. rightHand: When true, uses NPC R Hand [RHnd]. When false, uses NPC L Hand [LHnd]. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashToHand(Actor holder, Actor leashed, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Bool rightHand = True) Global Native ;/ Connects a leash from an exact bone on a holder to leash bones on another actor. holderBone: Exact node name on the holder. This attachment does not alter the holder's hand pose. offsetX, offsetY, offsetZ: Optional local-space offset from holderBone. The offset follows the bone's translation, rotation, and scale, but does not add an attachment rotation. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashToBone(Actor holder, Actor leashed, String holderBone, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Float offsetX = 0.0, Float offsetY = 0.0, Float offsetZ = 0.0) Global Native ;/ Connects a leash mesh equipped by the holder to an exact bone on the leashed actor. The first ordered leash bone remains in its neutral animated pose on the holder. The last ordered leash bone attaches to leashedAttachmentBone. leashParentBone: Exact node name to find on the holder before searching its descendants for leash bones. leashedAttachmentBone: Exact node name on the leashed actor. attachmentOffsetX, attachmentOffsetY, attachmentOffsetZ: Optional local-space offset from leashedAttachmentBone. The offset follows the bone's translation, rotation, and scale, but does not add an attachment rotation. closedHand: Applies the closed-fist pose to the holder. 1 closes the right hand, 2 closes the left hand, and every other value leaves both hands unchanged. All other arguments and replacement behavior match ApplyLeash. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyHolderOwnedLeashToBone(Actor holder, Actor leashed, String leashedAttachmentBone, String leashParentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent, Float attachmentOffsetX = 0.0, Float attachmentOffsetY = 0.0, Float attachmentOffsetZ = 0.0, Int closedHand = 0) Global Native ;/ Connects a holderless leash from a fixed position to leash bones on an actor. anchorCell: Cell containing the world-space position. It must correspond to the supplied coordinates. x, y, z: Fixed world-space coordinates of the leash anchor. All other arguments and replacement behavior match ApplyLeash. Pull distances are measured from the fixed anchor instead of a holder. World-position leashes do not assign LeasherFaction, have no result from GetLeashHolder, and do not use holder teleport recovery. Use DisconnectLeash(None, leashed) to disconnect one. Returns true when the arguments are valid and the leash is accepted. /; Bool Function ApplyLeashAtPosition(Actor leashed, Cell anchorCell, Float x, Float y, Float z, String parentBone, String leashBoneMatch, Float minLength, Float maxLength, Bool persistent) Global Native ;/ Disconnects the leash matching the specific holder and leashed actor. holder: Actor holding the leash. Pass None for a holderless world-position leash. leashed: Actor connected as the leashed endpoint. Returns true when the matching leash was disconnected. /; Bool Function DisconnectLeash(Actor holder, Actor leashed) Global Native ;/ Disconnects every leash where actor is either the holder or the leashed actor. Returns true when at least one leash was disconnected. /; Bool Function UnleashAll(Actor actor) Global Native ;/ Returns true when actor currently has an active leash. /; Bool Function IsLeashed(Actor actor) Global Native ;/ Returns true when actor currently holds at least one active leash. /; Bool Function IsLeashHolder(Actor actor) Global Native ;/ Returns the actor holding leashed's active leash, or None when the leash is holderless or absent. /; Actor Function GetLeashHolder(Actor leashed) Global Native ;/ Returns every actor currently leashed to holder. Returns an empty array when holder has no active leashes. /; Actor[] Function GetLeashedActors(Actor holder) Global Native ;/ Returns the minimum length of leashed's active leash, or -1.0 when leashed has no active leash. /; Float Function GetMinLeashLength(Actor leashed) Global Native ;/ Returns the maximum length of leashed's active leash, or -1.0 when leashed has no active leash. /; Float Function GetMaxLeashLength(Actor leashed) Global Native ;/ Sets the minimum length of leashed's active leash. newLength must be zero or greater and cannot exceed the current maximum length. Returns false when leashed has no active leash or newLength is invalid. /; Bool Function SetMinLeashLength(Actor leashed, Float newLength) Global Native ;/ Sets the maximum length of leashed's active leash. newLength must be positive and cannot be less than the current minimum length. Returns false when leashed has no active leash or newLength is invalid. /; Bool Function SetMaxLeashLength(Actor leashed, Float newLength) Global Native Future todos: Allow attaching the rope to specific bones rather than just the right hand Add explicit API to disable walking control (For now just set minLength/maxLength to high numbers so it never triggers) Known issues: Actors can get stuck on objects like doors rarely Some chains may not converge well (Gaps) - increase the solve iterations in the SKSE Mod Menu Actors wont follow you between load doors (Not a problem, lack of a feature) Source code: https://github.com/asdasdduck/Skyrim-Leash-Framework -
Leash View File Allows you to create a virtual leash that can be carried, thrown around or given to an NPC, getting too far away from the leash will cause a shock if you are wearing a shock collar from Real Handcuffs. -Max distance -Chance to shock -Stamina Only or Stamina + Damage option -Damage+Stamina increaser/recovery options -Time between shocks -Grace period for being outside range -Growing intensity shocks if outside range too long option -Stamina-relief shock abatement option -Collar-Free mode -Beep frequency reducer -Craftable Leash-Gun at the Chem Workbench -Optional Quest Marker -Notifier (with extra chatty debug option) -ESL flagged Destroy the leash (workbench or console) to disable its effect. Or maybe put it in a draw or something. NPCs should be editable to have the Leash added to their inventory and the mod should detect it, I'm not sure how it works if they've never been loaded into the game memory before, I've only tested sending an NPC to a few settlements (including Vault 88 and above ground). Yes, it can kill you. It should only affect the player, not NPCs. Issues: Do not sell the leash! The leash isn't detected in most non-NPC containers Untested with multiples leashes (may be exploitable/save you possibly) The leash may slip through the ground if dropped, this depends more on the terrain mapping than the item itself. Probably more! Permissions: Improve the mod (and include the source), fix the mod (and include the source), don't sell the mod (this includes farming downloads for membership (Nexus) etc). Real Handcuffs Required Submitter Franco Cozzo Submitted 05/14/26 Category Other Requirements https://www.loverslab.com/topic/118151-real-handcuffs/
- 28 replies
-
3
-
- bondage
- restraints
-
(and 2 more)
Tagged with:
-
766 downloads
Allows you to create a virtual leash that can be carried, thrown around or given to an NPC, getting too far away from the leash will cause a shock if you are wearing a shock collar from Real Handcuffs. -Max distance -Chance to shock -Stamina Only or Stamina + Damage option -Damage+Stamina increaser/recovery options -Time between shocks -Grace period for being outside range -Growing intensity shocks if outside range too long option -Stamina-relief shock abatement option -Collar-Free mode -Beep frequency reducer -Craftable Leash-Gun at the Chem Workbench -Optional Quest Marker -Notifier (with extra chatty debug option) -ESL flagged Destroy the leash (workbench or console) to disable its effect. Or maybe put it in a draw or something. NPCs should be editable to have the Leash added to their inventory and the mod should detect it, I'm not sure how it works if they've never been loaded into the game memory before, I've only tested sending an NPC to a few settlements (including Vault 88 and above ground). Yes, it can kill you. It should only affect the player, not NPCs. Issues: Do not sell the leash! The leash isn't detected in most non-NPC containers Untested with multiples leashes (may be exploitable/save you possibly) The leash may slip through the ground if dropped, this depends more on the terrain mapping than the item itself. Probably more! Permissions: Improve the mod (and include the source), fix the mod (and include the source), don't sell the mod (this includes farming downloads for membership (Nexus) etc). Real Handcuffs Required-
13
-
- bondage
- restraints
-
(and 2 more)
Tagged with: