top of page

Toys&Love - Mod Author's Documentation

Updated: Dec 27, 2022

Table of Contents


Other Resources

  1. API functions & more, verbosely documented in ToysFramework.psc

  2. Making a Toy Box - Guide To Making a Toy Box

    1. Toy Box Template (plugin) - download from Toys Framework page

  3. Toy Story Mod - as a demo. It has MCM Test and documentation in code

  4. Devious Toys Generator - download


Compile Requirements (also to access properties in the CK)

Notes:

Most requirements below are also needed to open Script Properties in the Creation Kit (CK). Missing these requirements will result in the CK error "Errors encountered while attempting to reload the script"

  • You need source (psc) for the compiler. You need compiled pex for the CK

  • For SE... You also need to be aware of which source file folder is pointed to by your Creation Kit .ini settings. The default is not the same as LE, and this is often a source of confusion. Toys&Love SE distributes its source in the default location, but some mods distruute in the old LE location, in which case you must move the source

  1. SkyUI_5.1_SDK

    1. in addition to the SDK, you need SKI_ConfigManager.psc, SKI_WidgetBase, SKI_WidgetManager from Github (schlangster/skyui). You will need to compile these to supply pex files for the CK (see notes above)

      1. If you want to skip Github or not setup for compiling, download the package... SkyUI Widget Source (for mod Authors), from the Toys&Love download page. You need to extract into the correct 2 folders manually... location varies thus don't install with a mod manager. For SE, the default is Data\Scripts for the .pex and Data\Source\Scripts for the .psc

      2. Yes the SDK is very old, and that's correct. Only the DLL changed in recent years

  2. JContainers - source comes with user release but does not install into the default location (see notes above)

  3. NiOverride - source does not come with Racemenu it's a separate download

  4. FNIS, including FNIS Creature Pack

  5. Soft Dependencies (a Soft Dep is a mod optional to the user, but still a hard requirement to compile):

    1. Sexlab source

    2. Sexlab Arousal source (most any variant)

    3. WildLife source

    4. Creature Framework source


Toy Setup & Properties

For those accustomed to DD, take note... this is very different... A Toys toy uses a single "Armor item" in CK. There is no chance of toy "breakage" (no hidden/broken Toy syndrome) due to this. Mod authors can make custom Toys with minimal effort. The steps follow.

Cloning or Creating a new Toy:

  • Make a copy of an existing similar toy from Toys (the Armor and Armor Addon items in CK)

  • Update the properties on the ToysProperties script, within the armor item (there are only 9 properties)

    • It's easier to start with a clone, but If creating from scratch, you will need to add the ToysProperties script to the toy. Never modify the ToysProperties script, only fill/change the properties. You can add your own separate scripts if needed

    • Mandatory Properties:

      • Lib... Always ToysFramework

  • ModelForToy... your toy's Armor item

  • ToyBox... shortname for your Toy Box, for example "Classic"

  • Optional Properties

    • ArousalStrength... A value, normally between 1 and 5. This is only used if you've included the ToysEffect_Rousing keyword. 1 for minor rousing, 5 for something like a very nasty plug

    • KeyConsumed... Set true if you want the specified key to be consumed on use

    • KeyForToy... The specified key. Leave empty if the toy is not to be removed using a key. You can use one of the 4 Toys keys, or your mod's own custom key

    • ModelTransformed... must be filled if you have included one of the Transformation Effect keywords. This is the toy that a transformation will swap to. See more re. Transformation section below

    • Timer... must be filled if you have included the Timed Transform Effect

    • 4 Properties for Buffs... Includes flat, max, and scaling to Rousing and/or XP. see ToysHandler.psc for details

  • Add Mandatory Keywords

    • ToysToy... this tells Toys that your toy is a Toys toy. This keyword must be present

    • ToysType_<bodypart>... One of the Toys Types must be included. There can be more than one. (example: a Toy that serves as both a blindfold and a gag, would occupy both Mouth and Eyes. This determines the slot. The same slot must be used by your Armor Item and Armor Addon. Toys Types are in the table (see pic)

  • Non-Toys Keywords. Normally you will want to include VendorNoSale, and MagicDisallowEnchanting. These keywords are not part of Toys but make sense to use

  • Add a Restrictive Keyword if necessary

    • ToysNoRemoval... toy cannot be unequipped, hidden, or stored by another mod

    • ToysPermitStore... toy can only be hidden or moved temporarily into storage by another mod

  • Add a Gender Compatibility Keyword if necessary

    • no keyword... Female Only (default). Males won't be able to equip

    • ToysGender_MaleFemale... toy can be equipped by either male or female

    • ToysGender_MaleOnly... toy can be equipped only by male

  • Optional Keywords (effects etc.) - All other keywords are optional and are detailed in the sections that follow

API - Toy Handling

Toy Handling Functions are listed here.

Full details can be seen in the verbosely documented ToysFramework.psc

  1. GetToy() - Selects a toy from available Toy Boxes, specifically, or randomly, considering available slots, preference, and gender compatibility

  2. HandleToy() - Equips, swaps, unequips, and stores a toy, playing nice with other mods (includes being "DD aware") and considering gender compatibility

  3. ReserveSlots() - Temporarily reserves open toy slots for use by only your mod

  4. IsSlotsReserved() - Check to see if slots are already reserved by another mod

  5. UnequipToys() - Unequips toys using keywords

  6. HideToys() - Temporarily hide toys for a short scene

  7. UnHideToys() - Unhide any hidden toys

  8. UnStoreToys() - Re-equip all toys the mod stored

  9. IsSlotAvailable() - Checks a slot to see if can be used. This is "DD aware"

  10. IsToyCompatible() - Checks Toy for compatibility with player/NPC gender

Use Toy Story for the following:

  • Example calls made to the API in Toy Story's TStoryMain.psc

  • Each API has a test that can be triggered by Toy Story's MCM

  • Mod Event Notifications can be turned on to see Mod Events firing

API - Love Scenes

Toy Handling Functions are listed here.

Full details can be seen in the verbosely documented ToysFramework.psc

Just want to play a Love Scene? All you need is Loving().

  1. Loving() - Start a Love Scene. By default matchmaking using close actors is automatic, or supply actors, # actors, tags, and more

  2. EndLove() - End scene early. You supply the descriptive "LoveName"

  3. SquirtingEffect() - does 5 things... Rousing decrease, Squirt visual, Squirt sound, Denial, and Random Facial Expressions. Useful if making a custom scene. Not required if using Loving() as the squirting is built-in

  4. SpontaneousO() - Trigger the same Spon O scene that Toys&Love does

  5. FondleThySelf() - Trigger the same Fondle that Toys&Love Fondle hotkey does

  6. GetRousing() - Returns the Rousing Level

  7. ArousalIncrease() - Use to cause extra Rousing appropriate for the toys worn

  8. ArousalAdjust() - Rousing is changed by a fixed amount

  9. GetArousalStr() - returns the current sum of Rousing Strength for arousing toys worn

  10. GetThermalStr() - returns the current sum of Thermal Strength for thermal toys worn

  11. GetOversexedVal() - returns the current oversexed value. When fully decayed it's 0

  12. GetOversexedMax() - returns the current oversexed max (the user can change this in MCM)

  13. CureOversexed() - sets Oversexed to 0. Useful for a mod to provide a cure. This is what the Oversexed Cure Potion does which can be used by mods

  14. Cumming() - Apply cum to specified body area(s)

  15. GetCumTimeRemain() - The time remaingnig on cum. 0 tells you there's none

  16. SceneIsActive() - true if the specified Scene is active

  17. SceneIsQueued() - true if Scene is queued

  18. SceneHasTag() - true if Scene has the tag

  19. LoveEffectsEnable() - Love Effects on/off

Furniture Love

  1. Furniture Love Objects - Custom locations can use vanilla game items (65 Base Types), including vanilla invisible markers (chair, table, or wall)

    1. Valid Base Types are documented within the ToysStoreFurn() function in ToysLoveLib.psc, and are also in ToysFurnList FormList

  2. Loving() parameter LoveSpot - If it's a valid ObjectRef for Furniture Love, will use it. If none, Loving() will auto-detect based on the MCM chance setting

  3. CloseMarkers() finds valid furniture for Furniture Love

API - Visual/Sound Effects Functions

See within ToysFramework.psc for more detail

  • Facial Expressions

  • Spontaneous Orgasm

  • Rousing Increase

  • Rousing Adjust

  • Squirt Visual & Sound

  • Orgasm Sound

  • Moan Sound

  • Scream Sound

  • Pant Sound

  • Wuusssh Effect (sound & physics)

  • Pulsate

API - Utility

See within ToysFramework.psc for more detail

  • Toys Version

  • VIMH aka. Voice in My head

  • Initialize Player for a Scene / un-Initialize Player After a Scene

  • Busy Check

  • Set Busy

  • Wait for Toy Boxes to Load / Check if Loaded

  • Get XP

  • Actor Scale Normalize

Mod Events

There are 40ish Mod Events. They are listed with details under the heading "Mod Events" in ToysFramework.psc. Here are a few examples...

  • Love Scene modEvents - ToysLoveSceneInfo ToysLoveStageEnd ToysVaginalPenetration ToysClimax ToysClimaxNPC ToysLoveSceneEnd - each return the "LoveName" you passed

  • Generic Scene modEvents - start/end, orgasm, stumble and fall. Scene start includes the scene name, which can be provided from the content mod calling the scene

  • Toys Effects modEvents - most effects

  • Misc modEvents - squirting, key drop, signing, fondle, toys worn change


Keywords - Buffs

  • Each Buff has self-explanatory ToysBuff_ keywords

  • Properties are used to set up the amount. The amount can be scaled to Rousing

For additional detail see ToysFramework.psc


Keywords - Effects

  • Love Effects - ToysEfffect_Proposition, ToysEfffect_Uncontrolled, and ToysEfffect_UnctonrolledOrgy - these make the toy trigger the love scenes

  • Denial - toy denies climax

  • Blind - use keyword ToysEfffect_Blind

    • Add this effect to any toy. Normally a blindfold

    • Chance that you idle/walk/run/sprint with animations that simulate blindness. MCM has chance slider

    • stumble/fall animations, which are more frequent if you "try" to sprint

  • Mouth Wide Open - use keyword ToysEfffect_MouthOpen

  • Magical Wrist Binding - use keyword ToysEfffect_MagicBind

    • Add this effect to any toy. Normally wrist cuffs, but could be anything, it's magic!

    • Chance (in MCM) that your arms/wrists are restrained, but not sufficient enough to disallow regular combat and any other activity. The magic allows you to "break out" of the pose

    • Chance (in MCM) that your arms/wrists are restrained in Hard Core mode. Hardcore mode is essentially the Arm Binding effect explained below

    • Uses 8 different styles of animations

    • Sliders in MCM allow you to adjust chance for normal mode, and Hard Core mode. If Hard Core is set to 100, you've essentially converted the toy to be the same as one using the Arm Binding effect. If set to 0 you've turned it off

  • Hard Core Magical Wrist Restraints - is part of Magical Wrist Binding, see above

  • Arms Binding - use keyword ToysEfffect_ArmBind

    • Add this effect to any toy. Normally toys such as Armbinder or wrist cuffs

    • Forces bound arms/wrists position animations

    • In combat, you can kick

    • Effect can only be stopped by removing or transforming the toy

  • Yoke Binding - use keyword ToysEfffect_YokeBind

    • Add this effect to any yoke toy

    • Forces bound arms/wrists animations positioned for a yoke

    • In combat, you can kick

    • Effect can only be stopped by removing or transforming the toy

  • Sounds for chains and bells are added to toys using an Enchantment effect, see examples on toys such as Wrist Cuffs (this is the only effect using an Enchantment instead of keyword)


Keywords - Escape Methods

  • Keyless: add the ToysKeylessRemoval keyword

  • Keys: fill the property KeyForToy

  • Custom Key: fill the property KeyForToy with your own key

  • Orgasm Fall Off Effect: add the ToysEffect_OrgasmFallOff keyword

  • Hit Fall Off Effect: add the ToysEffect_HitFallOff keyword


Keywords - Transform Effect

  • RousingTransfom - swap toy when rousing exceeds the trigger point. User can change in MCM, by Group

  • RousingUnTransform - swap the toy when the rousing goes back below that trigger point. Normally you'd swap it back to the original, but it can be to any model

  • HitTransform - swap the toy after X hits. User can change in MCM. This is global for all toys using this effect

  • LockJamTransform - swap the toy when a failed attempt to unlock occurs

  • TimedTransform - swap to the toy when the timer you've set expires

You can use these 5 transform methods in any combo. A toy could start as one that melts from rousing. Stage 2, the melted, could then transform upon X hits to stage 3. Stage 3 could then use one of the escape methods below to remove.

ModelTransformed... (property on the toy) is the toy that a transformation will swap to

Timer... (property on the toy) is game hours for the timer used for TimedTransform

Beyond a toy armor item to swap to, these are all you need. One of the keywords, and fill the property.

Think of the swapped or transformed toy as a new stage. It would be a toy that looks similar but is modified in some way (sometimes does not need to look different at all) to look melted from rousing, broken, etc. Each stage can have its own different set of keywords for effects, and other settings. So in addition to looking different, it could, for example, cause armor to strip (Strip Effect), make you crawl (Crawl Effect), have higher or lower rousing strength, anything you can define for a toy. This includes the following Escape Methods (next section).


Levelled Item Lists / Merchant

Toy boxes are loaded into several Levelled Item Lists at run time, for the purpose of setting up vendors/merchants. This includes a master list, giving you all toys from all toy boxes installed, and another master which lets you get toys randomly from all toy boxes. For more check the following containers, to see how they are setup

  • ToysMastALLContainer - all toys from all boxes

  • ToysMastRandomContainer - this sample is selecting 15 random, from all toy boxes

5,052 views
bottom of page