About This File
Skimpy Armor Keyword Resource (SAKR)
v1.1.2
Intro
Skimpy Armor Keyword Resource is a common resource/framework that allows mods to know what kind of clothing the player character is wearing and how revealing they are. This allows mods to react differently based on how much skin the player is exposing. For example, if the player is wearing nothing but a tight bikini, technically they are not considered "naked" according to modern standards. But it's still very different than a player dressed in clothing that covers every inch of her body like a Vault suit.
This mod will work the best with modular clothing mods such as the Vtaw collection or DONEB14N clothes pack, where the bra, panties, pants, and shirt are all individual clothing pieces. It can work for other more traditional single piece armor/clothing mods, but with less benefits.
Being a simple resource, the mod alone does not do anything. Other mods would need to integrate it to provide an improved experience to players.
Setup
WARNING:
The mod will not work as intended without proper initial setup. In addition to the usual mod installation, a proper setup is required to add the keywords provided by this mod to the armor/clothing mods that you use to dress your character. In other words, this mod provides armor keywords, but something else needs to add those keywords to all the armors.
The two main ways to do this are to download & install patches created by someone else, or create patches your own. There's an effort underway from the Loverslab Community to create RobCo Patcher patches (such as Rubber Duck's SAKR Repo) for a bunch of popular armor mods. If there's a RobCo Patcher patch for an armor mod you use, all you need to do is download & install RobCo Patcher (and its dependencies) then download & install the patch, and that's it.
But if there isn't a RobCo Patcher patch created for a mod you use, then you may need to add the keywords to armor yourself. There are two methods to do so: 1) create your own RobCo Patcher patch, or 2) update the armor mod's .esp file using FO4Edit. The RobCo Patcher method requires some learning curve, and requires RobCo Patcher to be installed. If you would like to avoid learning RobCo Patcher or avoid having to install a F4SE plugin, then you could alternatively use FO4Edit. If you have never used FO4Edit before, there is an instruction with pictures in the download section.
Main Feature
Armor, bra, panties, pants, skirt, and shirt pieces can be tagged with keyword(s) that describe how much of the body they cover. For instance, the mod lets you indicate a pair of pants as a skin tight hotpants that show every bit of your curves, or a loose baggy long pants that are not going to turn any heads.
Using the keywords the mod governs whether the player is considered "exposed". Exposed in this mod's context is if the player's private parts (crotch and breast for females, just crotch for males) are uncovered. For instance, a player wearing shoes, gloves, and helmet but nothing to cover the crotch or breasts will be considered "exposed".
The mod also provides a rating system for indicating how skimpy the player is dressed, even if the player may not be exposed. The Skimpy Rating ranges from 0 to 100, where 0 means not skimpy at all (every inch of the skin covered), and 100 being butt naked. So even if the player may be considered dressed (or not exposed), mods can then use the Skimpy Rating system to see how revealing the player is dressed. Mods can get Skimpy Rating for the lower body (waist down), Skimpy Rating for the upper body (waist up), or overall Skimpy Rating (full body).
Players can use MCM to customize how Skimpy Rating is calculated per keyword. If the player is in Power Armor, the player is considered fully dressed and Skimpy Rating is 0.
Here's a rough guideline for how the Skimpy Rating metric should be interpreted:
0 - You're basically dressed like an Eskimo. Theres no skin showing whatsoever and the clothing is bulky, hiding whatever you got under the clothes.
20 - This may be considered "business casual" with a hint of sexiness. Maybe a pencil skirt that hugs the curves, or slight peak of the top of the cleavage. Either way, no one will think this is an inappropriate clothing for any occasion.
40 - May be considered casual attire such as tank top and yoga pants. Some may consider this inappropriate for work, and you may turn heads. But depending on the occasion this may be fine.
60 - Dressed to impress and to flirt. Clearly NSFW and you will get fired if you showed up dressed like this. This is how one might dress up for parties, with the clear intention of showing off one's body and sexuality.
80 - You are basically in bikinis or underwear at this point. Your private parts may be covered, but everything else is fully exposed.
95 - Micro bikini and/or GString. The only thing covered are nipples and crotch.
100 - Butt naked.
How It Works
The mod recognizes "4 layers" of clothing:
Layer 1 - Underwear: Panties and Bra
Layer 2 - Outer wear: Pants and Top
Layer 3 - Cover: Skirt (as far as the mod is concerned, skirts can be worn over pants, mainly to allow the pants layer be used for pantyhose)
Layer 4 - Armor
A player is considered exposed only if the crotch or breast is not covered through the 4 layers of clothing. That means even if the player is not wearing any panties, if they are wearing pants, their crotch is not considered exposed. Skimpy Rating behave similarly. Even if the player is wearing the skimpiest GString imaginable, if they are wearing pants over that cover every inch of the legs, then the Skimpy Rating for the bottom will be based on the pants, not the GString.
Keywords
There are 7 main types of keywords. Any piece of clothing that covers the crotch or breast need to have at least one of the following keyword with the prefix:
sakr_kwd_armorTop*
sakr_kwd_armorBottom*
sakr_kwd_panty*
sakr_kwd_bra*
sakr_kwd_pants*
sakr_kwd_skirt*
sakr_kwd_top*
A piece of clothing can have 2 types of keywords if they cover both the crotch and breast. For example, a Vault suit may have both sakr_kwd_pantsLong & sakr_kwd_topFull. In another example a long dress may have both sakr_kwd_skirtLong & sakr_kwd_topFull. A piece of clothing that does not cover the crotch or the breast (e.g. gloves) should not have any of the keywords.
In addition some pieces have "Tag" keywords meant to even futher characterize the clothing. A clothing/armor item can have 0 tags, 1 tag, or more than 1 tags.
Bra
A bra. All bras should have this keyword.
sakr_kwd_braNormal - A normal bra that covers the breasts conservatively
sakr_kwd_braBikini - A bikini bra that reveals generous amount of side boob and cleavage.
sakr_kwd_braMicroBikini - A scandalous bra that only barely covers the nipples. Everything else is revealed
Optional additional tags
sakr_kwd_braTagSheer - tag for bra to indicate sheer or see-through material. Absence of this tag implies non-see-through material
Panty
A panty. All panties should have this keyword.
sakr_kwd_pantyNormal - A traditional panty that covers much of the butt and front.
sakr_kwd_pantyThong - A thong that reveals generous amount of butt. The front is still covered decently
sakr_kwd_pantyGString - A scandalous string panty that reveals the entire butt. Only barely covers the crotch.
Optional additional tags
sakr_kwd_pantyTagSheer - tag for panty to indicate sheer or see-through material. Absence of this tag implies non-see-through material
Top
A clothing item worn under the armor that covers the upper body. All tops should have one of these keywords
sakr_kwd_topFull - A top that covers every inch of the breast from the front (no cleavage).
sakr_kwd_topCleavage - A top that reveals a generous amount of cleavage.
sakr_kwd_topLowCutCleavage - A top with a cut so low that the breast area between the nipples are fully revealed.
Optional additional tags
sakr_kwd_topTagTankTop - A sleeveless top that reveals the armpits and parts of the shoulders. Can be also used for tube top that dont cover the shoulders at all. Absence of this tag implies shoulders and armpits are covered (e.g. shirt with sleeves).
sakr_kwd_topTagCropTop - A top that reveals the belly. Absence of this tag implies the belly is covered.
sakr_kwd_topTagHalterTop - A top that reveals generous amounts of the back. Absence of this tag implies the back is covered.
sakr_kwd_topTagSideBoob - A top that reveals generous amounts of side boob. Absence of this tag implies the side boobs are covered.
sakr_kwd_topTagTight - A skin tight top that hugs every curves and clearly outlines the breast shape. Absence of this tag implies loose top.
sakr_kwd_topTagSheer - A top that is sheer material or semi transparent. Can see through if looking close. Absence of this tag implies non transparent material
Pants
A pair of pants must have one of these keywords
sakr_kwd_pantsLong - A pair of long pants that extend to the knees or cover below the knees.
sakr_kwd_pantsShorts - Short pair of pants that reveal much of the thighs but fully cover the butt
sakr_kwd_pantsHotPants - Hot pants so short that it reveal the bottom of the bums
sakr_kwd_pantsThong - Are these pants? Thong-shaped pants that reveal almost all of the butt and only cover the crotch
Optional additional tags
sakr_kwd_pantsTagTight - A skin tight pair of pants that hug every curves and clearly outlines the butt shape. Absence of this tag implies loose pair of pants.
sakr_kwd_pantsTagSheer - A pair of pants that is sheer material or semi transparent, like pantyhose. Can see through if looking close. Absence of this tag implies non transparent material
Skirt
A skirt that can be worn over pants. All skirt should have one of these keywords
sakr_kwd_skirtLong - A skirt that extend to the knees or cover below the knees.
sakr_kwd_skirtShort - Short skirt that cover well below the butt but reveal good amount of the thighs.
sakr_kwd_skirtMini - Mini skirt that just barely covers the butt. Can reveal the butt when bending over or running
sakr_kwd_skirtMicro - A scandalous skirt so short it reveals the bottom of the butt. Any slight movement will fully reveal the full bum and the groin.
Optional additional tags
sakr_kwd_skirtTagTight - A skin tight skirt that huges the thighs tightly. Clearly outlines the curves. Absence of this tag implies loose skirt, e.g. pleated skirt
sakr_kwd_skirtTagSheer - A skirt that is sheer material or semi transparent. Can see through if looking close. Absence of this tag implies non transparent material
Armor Top
An armor that covers the upper body must have one of these keywords
sakr_kwd_armorTopFull - A top armor worn over clothing. A rather large armor that covers most of the upper body
sakr_kwd_armorTopBreast - An upper body armor that only covers the breast area and reveals other parts of the upper body
sakr_kwd_armorTopLewd - A bikini-like armor that only barely covers the nipples and reveals much of the breast and upper body
Armor Bottom
An armor that covers the lower body must have one of these keywords
sakr_kwd_armorBottomFull - A bottom armor worn over clothing. A rather large armor that covers most of the legs
sakr_kwd_armorBottomButt - A lower body that only covers the butt and groin and reveals much of the legs
sakr_kwd_armorBottomLewd - A bikini-like armor that only barely covers the groin and reveals much of the butt and lower body
Accessories
Clothing items that do not cover the crotch or breasts, but can still change a player's skimpiness
sakr_kwd_stockingsLong - a pair of knee-high stockings
sakr_kwd_stockingsTagShiny - optional tag for stockings to indicate shiny material like latex or leather. Absence of this tag implies cloth-like material
sakr_kwd_stockingsTagSheer - optional tag for stockings to indicate sheer or see-through material. Absence of this tag implies non-see-through material
sakr_kwd_shoesHighHeels - a pair of high heel shoes
sakr_kwd_shoesKillerHeels - a pair of shoes that are "killer heels" or extremely tall high heels. These are impractical and difficult to walk in normally
Keyword example
Here are some examples of what keyword combination may be appropriate depending on the clothing item.
Yoga pants: sakr_kwd_pantsLong, sakr_kwd_pantsTagTight
Pantyhose: sakr_kwd_pantsLong, sakr_kwd_pantsTagTight, sakr_kwd_pantsTagSheer
Tight tanktop with bust view: sakr_kwd_topCleavage, sakr_kwd_topTagTankTop, sakr_kwd_topTagTight
Accessories can be combined. For instance, a pair of knee-high leather high heel boots can be characterized by combination of sakr_kwd_shoesHighHeels, sakr_kwd_stockingsLong, & sakr_kwd_stockingsTagShiny.
Keyword form IDs
Click here to view all the keywords and their form IDs
sakr_kwd_armorTopFull 1000802
sakr_kwd_armorTopBreast 1000803
sakr_kwd_armorTopLewd 1000804
sakr_kwd_armorBottomFull 1000805
sakr_kwd_armorBottomButt 1000806
sakr_kwd_armorBottomLewd 1000807
sakr_kwd_pantyNormal 1000808
sakr_kwd_pantyThong 1000809
sakr_kwd_pantyGString 100080A
sakr_kwd_pantyTagSheer 10026B0
sakr_kwd_braNormal 100080B
sakr_kwd_braBikini 100080C
sakr_kwd_braMicroBikini 100080D
sakr_kwd_braTagSheer 10026AF
sakr_kwd_pantsLong 100080E
sakr_kwd_pantsShorts 100080F
sakr_kwd_pantsHotPants 1000810
sakr_kwd_pantsThong 1000811
sakr_kwd_pantsTagTight 1000812
sakr_kwd_pantsTagSheer 1000813
sakr_kwd_skirtLong 1000814
sakr_kwd_skirtShort 1000815
sakr_kwd_skirtMini 1000816
sakr_kwd_skirtMicro 1000817
sakr_kwd_skirtTagTight 1000818
sakr_kwd_skirtTagSheer 1000819
sakr_kwd_topFull 100081A
sakr_kwd_topCleavage 100081B
sakr_kwd_topLowCutCleavage 100081C
sakr_kwd_topTagCropTop 100081D
sakr_kwd_topTagTankTop 100081E
sakr_kwd_topTagHalterTop 100081F
sakr_kwd_topTagSideBoob 1000820
sakr_kwd_topTagTight 1000821
sakr_kwd_topTagSheer 1000822
sakr_kwd_stockingsLong 10026B1
sakr_kwd_stockingsTagShiny 10026B2
sakr_kwd_stockingsTagSheer 10026B3
sakr_kwd_shoesHighHeels 10026B4
sakr_kwd_shoesKillerHeels 10026B5
Installation
- Install like any other mod (use NMM, or Vortex, or MO2, or manually drag into game data folder)
- After installation, add keywords to armor: either download RobCo Patcher patches, or do it yourself. Refer to "Setup" section for details.
Requirements
None
Modder's Resource
The mod provides APIs for mods to call to get player's exposed/skimpy status:
Note that all of these APIs simply read from global variables that were already precalculated. So there should not be any performance concern calling these APIs too frequently
Get API object
Quest SAKR_API = Game.GetFormFromFile(0x00000800, "SkimpyArmorKeywordResource.esm") as quest
ScriptObject sakr_script = SAKR_API.CastAs("SAKR:SAKR_Main")
Get whether the player is naked
bool isNaked = sakr_script.CallFunction("isPlayerExposed", new var[0]) as bool
Get whether the player's crotch is exposed
bool crotchExposed = sakr_script.CallFunction("isPlayerLowerBodyExposed", new var[0]) as bool
Get whether the player's breasts are exposed
bool breastsExposed = sakr_script.CallFunction("isPlayerUpperBodyExposed", new var[0]) as bool
Get player's overall (full body) Skimpy Rating
int skimpyRating = sakr_script.CallFunction("getPlayerOverallSkimpyRating", new var[0]) as int
Get player's upper body Skimpy Rating
int upperSkimpyRating = sakr_script.CallFunction("getPlayerUpperBodySkimpyRating", new var[0]) as int
Get player's lower body Skimpy Rating
int lowerSkimpyRating = sakr_script.CallFunction("getPlayerLowerBodySkimpyRating", new var[0]) as int
Listen for skimpy rating changes
SAKR:SAKR_Main sakr_main
Function SampleFunction()
Quest SAKR_API = Game.GetFormFromFile(0x00000800, "SkimpyArmorKeywordResource.esm") as quest
sakr_main = sakr_api as SAKR:SAKR_Main
RegisterForCustomEvent(sakr_main, "OnSkimpyRatingUpdate")
EndFunction
Event SAKR:SAKR_Main.OnSkimpyRatingUpdate(SAKR:SAKR_Main akSender, Var[] akArgs)
int overallSkimpyRating = akArgs[0] as int
int upperBodySkimpyRating = akArgs[1] as int
int lowerBodySkimpyRating = akArgs[2] as int
; do something here
EndEvent
---
The mod also provides keywords that can be used universally within the context of skimpy/sexy/scandalous armors for mods to communicate with each other. The following keywords are meant to be flags that mods use to mark an armor/equipment with a certain meaning. These are more intended for a single instance of an armor object, not the armor form. These mod-targeted keywords can be idenfitied by the "mFlag" prefix, short for "mod flag"
sakr_kwd_mFlagUnequipProtectedItem (10026BD) - keyword to mark that a piece of armor is protected and should not be unequipped by other mods
Q/A
After wearing clothes that I added keywords to, my skimpy rating isn't being updated. Whats wrong?
Remember to close FO4Edit if it's still open. If it's open, any changes won't get loaded when the game starts.
Also, make sure to give about 2 seconds after wearing clothes in game. The mod waits about 1.5 seconds after the player changes armor (for performance reasons), before calculating the skimpy rating.
Can you add XYZ keyword?
Depends. Requests will be evaluated on a case-by-case basis. Each new keyword addition has performance implications. For instance, if the mod has a total of 50 keywords, that's 50 individual keywords that the mod needs to check whenever the player's equipment changes. If 10 more were to be added, that number increases to 60. Therefore, the mod will not blindly introduce new keywords to infinite granularity. Keywords will only be added if there are enough armor/clothing pieces that need it to be properly categorized and scored. Otherwise, stick to one of the existing keywords that are most similar.
Edited by twistedtrebla
What's New in Version 1.1.2
Released
v1.1.2
- Fixed a bug where wearing sheer skirt or legs would sometimes set the skimpy rating to 0 due to math error
Previous changelog.
v1.1.1
- Fixed a bug where wearing nothing but high heels/stockings would cause the player to be not considered exposed.
v1.1.0
-
Added new keywords
- sakr_kwd_braTagSheer - tag for bra to indicate sheer or see-through material. Absence of this tag implies non-see-through material
- sakr_kwd_pantyTagSheer - tag for panty to indicate sheer or see-through material. Absence of this tag implies non-see-through material
- sakr_kwd_stockingsLong - keyword for knee-high stockings
- sakr_kwd_stockingsTagShiny - tag for stockings to indicate shiny material like latex or leather. Absence of this tag implies cloth-like material
- sakr_kwd_stockingsTagSheer - tag for stockings to indicate sheer or see-through material. Absence of this tag implies non-see-through material
- sakr_kwd_shoesHighHeels - keyword for shoes that are high heel
- sakr_kwd_shoesKillerHeels - keyword for shoes that are "killer heel", the impractical ones that are difficult to walk in normally
-
Added new keyword for mods. Keywords with "mFlag" (mod flag) prefix are ones that are intended to be used by mods to flag a certain armor piece to mean something
- sakr_kwd_mFlagUnequipProtectedItem (10026BD) - keyword to mark that a piece of armor is protected and should not be unequipped by other mods
- Added a new event that mods can use to listen for skimpy rating changes (see Modder's Resource section in main page for details)