Echo Hollow

Because Pr0n is the Highest Form of Art.

User Tools

Site Tools


smutbook:classes:apparel:start

Table of Contents

Apparel

Apparel in SmutBook is defined as anything that a Person can wear. This includes clothing, jewelry, and perhaps even naughty toys in some cases.

The Apparel system also provides the Wardrobe and WornApparel classes, which are special subclasses of GeneralInventory that only deal with Apparel. Wardrobe is a lightly modified GeneralInventory that modifies the sorting implementation to make it more clothing-specific (although it can still contain any PersistentObject, non Apparel objects will all be lumped into the “Other” category). WornApparel is used by the Person classes to track what a Person is wearing, and enforces the rule of only one article of apparel per ClothingSlot (see below).

In general, you may use a Wardrobe interchangeably with a GeneralInventory when using the InventoryUI macro. For the wearing and removing of Apparel by a Person, however, a modified version (ApparelUI) is provided. The left-hand inventory provided to ApparelUI should always be a Person (not a WornApparel, but the higher-level Person object that is dressing/undressing). The right-hand inventory should always be a Wardrobe. FIXME This isn't *technically* true, but the sorting will be fked up; but we need to make it Work Better, as I can see use-cases where a person might want to dress out of a backpack in a bathroom stall, or somesuch.

FIXME: Document how WornApparel and Wardrobe interact as far as items technically remaining in the Wardrobe while they are worn by a Person.

TODO

Stuff that is changing:

A Person should have some statistics that control the window that the values of their Transformables can be in. These values can be changed by player action as the story progresses.

  • Femininity/Masculinity scale (with Androgynous in-between)
    • Decides whether others see the character as male or female (or aren't sure).
    • Might gate off clothing and action choices, depending on the preference of the particular game author.
  • Corruption/Virtue scale (“slut” vs “good girl” axis - Can we consider “cute” as virtuous?)
    • Can determine how others view/treat the Person.
    • Might also gate off actions and certain slutty or conservative clothing options.

An article of Apparel will have a +/- Fem/Masc value and a +/- Corr/Virt score. Wearing said article will modify the Person's base score by the Apparel's score, For the purposes of reactions of other people, this will only count if the clothing is visible (not covered up by other clothing), but it will always count for the purposes of that character's inner monologue action choices (a character wearing slutty panties hidden under their jeans will feel slutty and feminine regardless of whether anyone else can tell that they are wearing them).

Additionally, an article of Apparel will have baseline Fem/Masc and Corr/Virt values assigned to it. These values control how much the Person's base scores can be permanently modified by wearing that clothing, when the sleep-TF mechanic is enabled (see below).

A Sleep-TF mechanic can be enabled, which will cause the Person's modified Fem/Masc and Corr/Virt values to be checkpointed for each time unit (probably hours) when the game time is advanced. When the Person sleeps, their base scores will be modified based on those checkpointed values, causing their base score to drift towards whatever their modified score is. The amount of change that each article of clothing can make will be capped within a window defined by the baseline Apparel scores mentioned above. This, along with the clothing-gating, will model the mechanic where a character continually upgrades to more extreme clothing as their transformation progresses, and in turn those clothing drive that transformation further. Or can stop or reverse the transformation by keeping their dress/behavior the same or backsliding.

At sleep-time, the amount that the base score change transforms the actual Transformable body parts on the person can be figured out by weighting the body parts based on the scores of the clothing that is worn on them. We can allow a player to settle on the breast size they want, for example, by providing bras of different sizes, and allowing them to wear a size too large or too small and then trending towards that. FIXME: It is not obvious, however, how to deal with a character who wants to wear more and more feminine clothing, but keep the penis, like for a futa or trap character. This would probably need to be an individual setting per Person, set by player choice outside of the automatic slow-TF mechanic. FIXME Maybe there needs to be a top/bottom mechanic involved in this, where pitching grows the cock and catching shrinks it. We'd still need a way for sissies who don't want to be girls can choose to keep their tiny cock instead of changing into a girl though.

Tracking strict game-time is something that I wanted to stay away from, but in a slow-TF game where what you wear and for how long determines how and how much you change, I think it kind of has to be there. I just don't want to build something that encourages that sort of empty day-loop that a lot of games have, where you have to click through a bunch of same-old stuff to get to the next plot point. Instead, I want to build something that encourages a game with a well-paced plot that happens to have a timekeeping system supporting it. I think maybe the best way to do this would be to eschew the automatic day-loop entirely and rely on the game to advance the time, when it is appropriate, based on the player's choices in driving the plot along.

Each Apparel will be of one or more ClothingTypes. Only one of each ClothingType may be worn at a time. Additionally, a ClothingType may define other ClothingTypes that conflict with it. This would allow us to, for example, make a dress conflict with pants and shirt. These will just be a string (we ought to make it case-insensitive just to make things easier on the library user), and we'll want to implement an easy way to implement new ClothingTypes and to add new conflicting ClothingTypes to existing ClothingTypes.

  • underpants
  • bra
  • stockings (also for socks)
  • top
  • bottom
  • dress (conflicts with top and bottom)
  • shoes
  • coat
  • hat
  • gloves
  • bag (handbag, backpack, satchel - things worn over your shoulder or on your back on top of everything else)
  • necklace
  • bracelet
  • ring
  • earrings
  • bellyButton (piercing)
  • nipples (piercing)
  • maleChastityDevice
  • femaleChastityDevice
  • wig

ClothingType occupies one or more Layers. Usually only one, but if we want to implement a whole costume as one item, for example, we may want to make it use several layers. In fact, we should combine the implementation of this and BodySlot into a list of (layer,bodyslot) pairs. FIXME

  • bodypart (cock, breasts, hair, beard, body hair, etc)
  • onbodypart (cages, jewelry, wigs, etc)
  • underwear (panties, bra)
  • overunderwear (pantyhose, stockings, leggings)
  • clothing (pants, shirts, skirts, shoes)
  • overclothing (belts, plate carriers, sheathes, holsters, etc)
  • outerwear (coats, hats, gloves)
  • strapped (backpacks, sachels, rifle slings)

A particular article of clothing occupies one or more BodySlots (used used in conjunction with Layers to figure out what covers what):

  • scalp - top of head. Hair, wigs, hats.
  • ears
  • eyes
  • nose
  • mouth
  • chin - beards, facial hair
  • neck
  • shoulders
  • breasts
  • cleavage
  • upperBack
  • tummy
  • lowerBack
  • upperHip - low-rise clothing won't cover this. So we can model whale-tails, etc.
  • groin
  • ass
  • thighs
  • knees
  • calves
  • ankles
  • feet
  • toes
  • upper arms
  • elbows
  • lower arms
  • wrists
  • hands
  • fingers

Each (layer,bodyslot) will specify a (coverage,thickness).

  • Coverage:
    • “none” - No coverage at all at location. Generally used for non-default apparel states (ie pulling up a skirt).
    • “partial” - Coverage exists on the location, but lower layers can be seen through it (spaghetti straps, sheer fabric)
    • “full” - The location is fully covered and lower layers cannot be seen (unless the “print through”).
  • Thickness:
    • “thin” - the apparel will not print through a tight layer above it.
    • “tight” - non-thin apparel on lower layer prints through (ie panty-lines through leggings, bra under tight t-shirt)
    • “normal” - Standard clothing fully hides what is below it if the coverage is full.
    • “bulky” - clothing cannot be worn on layers above it (ie a backpack, wings as a body part, etc)

Things we have to be able to handle:

  • a tight blue t-shirt (showing the lines of a bra) - non-thin bra, tight shirt
  • an off-shoulder crop top (showing the shoulder straps of a pink bra) - crop top doesn't cover shoulders, bra changes description depending on what parts of it are hidden.
  • an unzipped leather jacket - “unzipped” state changes front coverage to partial.
  • a pair of red satin panties (showing the bulge of a small cock and balls) - tight panties
  • a pair of low-waisted cutoff jean shorts (showing the whale-tail of a pink thong) - pants don't cover upperThigh; thong has partial coverage on upperThigh.

FIXME Finish transcribing this from notes before implementation.


smutbook/classes/apparel/start.txt · Last modified: 2023/08/12 17:24 by lee