Jump to content

About This File

Absentee author's note: I've been away from Skyrim for a year, and I don't see much hope of being able to continue this.  The keyword system is still potentially useful I think, but I don't really expect anyone to make use of it.

 

If anyone wants to take this over, they are very welcome!

 

 

What this mod does:

  • Provides six coverage keywords to indicate what sensitive body areas are blocked by an equipped item.
    • These keywords are injected into the 01xxxxxx address space (update.esm), and so can be incorporated into any game with no heavy requirements.
      • 01010800: BlocksOral    (masks and gags by default)
      • 01010801: BlocksVaginal    (clothing/armour/belts/plugs) (basically, blocks insertion)
      • 01010802: BlocksAnal    (clothing/armour/belts/plugs)
      • 01010803: BlocksBreast    (any coverage)
      • 01010804: BlocksGrope    (breasts, armor or other rigid covering only)
      • 01010805: BlocksSpank    (rigid armor, not cloth or short skirts)
      • 01010806: BlocksClutch    (crotch, rigid coverage, protects pussy/penis) Sorry, I couldn't come up with a better term!  I tried "grab", but too close to "grope"!
  • Provides patches for all vanilla outfits, as well as those modified by various common mods.  Additional patches are easily created, and can be simply merged.
  • Includes two simple functions which are DD-aware but do not require DD:
    • SWYM.Report: returns whether one or more areas are blocked
    • SWYM.Strip: removes only those items blocking one or more of the areas, as selected
      • The Strip function respects DD's Quest and BlockGeneric keywords, removing only generic items, with keys found on either of two actors passed to the function

 

The reasoning:

There are certain coverage/accessibility checks that are needed by many mods:

     Is a character's mouth free (for eating or dialogue)?

     Are various openings or regions "accessible" for sex?

          If not, can we use a limited stripping routine to remove just those items necessary to make a particular location accessible?

     Is a character "indecently" exposed, for crime checks, for modified dialogue, etc.?

     Is a character sufficiently exposed to permit groping, spanking, etc.?

 

Trying to determine these things case-by-case based on occupied slots is challenging, since different clothing and armor items can be inconsistent in their slot use, and in what coverage is really represented by such use.  "Slot 32" full body outfits can vary from full plate to a bikini.  Some items have keywords to indicate less-than-typical coverage (EroticArmor for instance, or the various "PermitsXXX" tags in DD), but these keywords are mod-dependent, still rely on first checking whether some "standard" slots are occupied, and also can not be simply checked on a whole-actor basis - a "Sexy" keyword on an item means nothing if that item is hidden underneath non-revealing armor.

 

Instead of keywords to indicate exposure, what is needed are keywords that indicate an area is blocked.  If an area is covered by one or more items, a simple and quick WornHasKeyword will indicate this, and no other items can make the actor less exposed.  The problem, of course, is that most items do not have these keywords... and that such keywords, to be universally useful, must not be tied to heavy dependencies.  Hence injecting the keywords into update.esm - and this injection can be duplicated in multiple mods without harm, resulting in no hard dependencies whatsoever.

 

I had intended just to provide the keywords, but as a proof-of-concept produced the Report and Strip functions.  These can be used by other mods, or can be replaced by better ones of course.  I am hoping people will have suggestions, ideas, or better ways of doing things.  This framework is supportive, but useless on its own!

 

Installation:

I recommend a mod manager, of course.  SWYM can be dropped into a running game.  Uninstallation: I do not recommend removing mods from a game in progress; this mod can be ignored and will have nearly no impact on a game.  If you must, remove and clean your save.  But by itself, there is NO reason to install this, it is a resource for other mods.

 

There are four files provided:

  • SWYM: the Report and Strip functions.  Also includes keywords.
  • swymMCM: an MCM I used for testing, ugly and clunky.  You don't need this, but can use it to try out the Report and Strip functions if you wish (only on the player).
  • lgKeywords: a bare-bones file that does nothing but provide the keywords.  This can be used as a base for additional patches.  It is not needed by itself.
  • SWYM_keyword_patches: a collection of .esp files which add keywords to clothing/armor provided by vanilla/DLC/mods as shown below.  Use only those you need, placing them below the files to be patched (though I recommend merging, or at least doing bashed patches & TES5Edit merges).  More must be added!

 

  • Spoiler

     

    • lgMainKwdPatch     skyrim.esm, update.esm, 3 DLCs
    • lgUSLEPKwdPatch     Unofficial Skyrim Legendary Edition Patch
    • lgSPERGKwdPatch     SPERG - Skyrim Perk Enhancements and Rebalanced Gameplay

    • lgSPERGdbKwdPatch    SPERG - dragonborn add-on

    • lgWeapAndArmFixesRemadeKwdPatch     Weapon & Armor Fixes Remade
    • lgClothingClutterKwdPatch    Clothing & Clutter Fixes
    • lgSBCKwdPatch    SexyBanditCaptives    0.970f
    • lgMWAKwdPatch    Mortal Weapons & Armor    0.45
    • lgSweetSexyLingerieKwdPatch Sweet & Sexy Lingerie Shop    3.0 (built with the UUNP patch, it may require modification for CBBE)
    • lgRobesReplacerKwdPatch    PeroPero Mage Robes Replacer Standalone
    • lgTAWoBASpKwdPatch     The Amazing World of Bikini Armor - version with patched slots from SL Survival's thread, but probably works on original also

     

     

 

How these keywords connect to clothing & armor, how I've interpreted them:

Spoiler

 

Nudity checks: On top, BlocksBreast is a fair check.  On bottom, it depends.  Plugs should NOT have "BlocksVaginal/Anal" (plugs are handled separately by SWYM.Strip), in which case BlocksVaginal + BlocksAnal can be used for a very "permissive" check (that is, allowing very near naked but not truly naked), and BlocksSpank + BlocksClutch would give a more "conservative" interpretation of "not naked".


So far I've assumed that all plugs "in the wild" are coming from DD, because that's what I see in my game.  But this is a first version, and other people will have different experiences!  We can fix this according to what people actually need.

 

BlocksVaginal/BlocksAnal also block removing plugs.

 

  • Items considered "armor" (other than bikini armor) is assumed to block all 6 "body" slots by default.  As a result, I've probably given some revealing items keywords they shouldn't have (spanking/clutch particularly).
  • Items called "clothes" were assumed to block "sex" (Vaginal, Anal, Breasts) but not handling (Grope, Spank, Clutch)
  • Blacksmith aprons, including some modded ones, look like full clothes with heavy front protection, so they additionally have BlocksGrope.
  • Robes only have BlocksBreast, on the assumption they get pushed up during sex.  Maybe we should change this?
  • Masks & full helmets: BlocksOral
  • Trousers & Panties: Blocks Vaginal + BlocksAnal
  • Fur Kilts get BlocksSpank and BlocksClutch (effective against hands, but pushed up for sex?)
  • Coats, with the same thinking as kilts, block breasts, grope, spank, and clutch.
     

For Devious Devices:

  • Plugs don't "block" as such, but should be removed if anything is to be inserted.  How to handle this?  I'm still torn.  For now, Report optionally calls them "blocking".
  • I've assumed harnesses block nothing unless they are chastity harnesses, which block vaginal & anal.
  • Hobble skirts/dresses block the 3 "sex" slots but none of the 3 "handling" slots.
  • Straitjackets & anything else using the "suit" keyword only add BlocksBreast.

 

 

 

The interface of SWYM (the API!):

Spoiler

Properties:

int property swymOral = 1 AutoReadOnly
int property swymVaginal = 2 AutoReadOnly
int property swymAnal = 4 AutoReadOnly
int property swymBreast = 8 AutoReadOnly
int property swymGrope = 16 AutoReadOnly
int property swymSpank = 32 AutoReadOnly
int property swymClutch = 64 AutoReadOnly
int property swymAll = 127 AutoReadOnly    ;convenience flag, sum of all the above

 

Functions:

int Function Strip(Actor aToStrip, Actor aStripper = NONE, int iAccess = 127, bool bHands = false, bool bKeys = false, bool Silent = false)

Return value: -1 if busy, 0 if all requested stripping successful, or a value indicating which areas remain blocked (sum of the properties above).

 

aToStrip = who is being stripped

aStripper = who is doing the stripping, only used as an additional source of keys for DD items (keys are taken from aToStrip first)

iAccess = what to remove, using bitwise comparisons to the properties above.  Basically, add all desired areas to get this value (to access Vaginal & Anal, iAccess = 2 + 4 = 6)

bHands = unequp whatever's in the hands

bKeys = whether to use keys to remove DD items, or leave locked items alone

Silent = provide debug.notifications of what is removed, and of failure to remove items

 

 

int Function Report(Actor aToStrip, int iAccess, bool CheckPlugs = false)

Return value: sum of all checked areas that are blocked, using the properties above.

 

aToStrip: who is being checked

iAccess: which areas to check, as described above

CheckPlugs: whether to consider plugs "blocking".  For nudity checks this should be false, for access in terms of insertion, make it true.

 

 

 

Acknowledgements:

Thanks to lupine00 for the original idea of using blocking keywords, to HexBolt8 & Corsayr for keyword advice, and Kimy for helpful pointers to DD functions that are called by Report and Strip., and Monoman1 for the method of more careful soft-dependencies (for which I apparently owe thanks to lupine00 also).

 

Other notes:

 

  • I do not have SE, and assume these files are not compatible with SE, but I suspect they should be easy to adapt.
  • The current patches reflect what I happened to have installed.  It is easy to add more keywords for more mods - I can do so, but so can anyone, and I will gladly add any such patches to this collection.
  • At this early stage, it is still quite possible to change the keywords, or add new ones though I am cautious about adding many keywords for every possible Blocking region.
  • The current patches do NOT reflect any mods that change meshes to make armor more revealing than standard.  For the most part these particular regions are probably still correct, but we could have patches for different armor replacers, for instance.
  • The main patch assumes all 3 DLCs, since they are included with Legendary Edition.  These can be split, if there's a need.

 

Edited by legraf


Other Files from legraf


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use