dirtiness 
The mess a person or an item carries, as splats: each a variant of a zone's mess at a level, from masks SSdirt makes. A person's skin splats draw through one /datum/bodypart_overlay/dirt_skin on each limb skin mess draws on, under what they wear, and fade out beside it. Their underclothes' splats are kept with each piece, and draw over it through one /datum/bodypart_overlay/dirt_underclothes on the chest while it's worn and shows. Their parts' splats draw with each part's own front layer, and their taur body's pools with the taur body's own images. A garment's splats draw inset over it while a person wears it, and a taur suit's back splats as pools along the taur body's back too. The parts a surface's mess reaches shape it (dirt_surface_parts()). Washing clears it, as it clears the floor's decals.
Vars | |
| cloth | An item's cloth masks, made from its wearer's body. |
|---|---|
| cover_key | What the body wore over its skin when the skin's request was made, as dirt_sprites_key() writes it. |
| mess_splats | This carrier's /datum/dirt_splat, oldest first: a person's skin, or an item's cloth. |
| part_drawings | alist(ORGAN_SLOT_* = /datum/dirt_drawing): each part with splats' own masks, made again when its sprite changes. |
| part_mess_splats | A person's parts' splats: alist(ORGAN_SLOT_* = list of /datum/dirt_splat, oldest first). The taur body's pools are ORGAN_SLOT_EXTERNAL_TAUR's. |
| parts_key | The body's parts as dirt_body_parts_key() wrote them when check_parts() last looked, so a change since draws the garments it wears again, which check their own masks as they draw. |
| skin | The skin's masks, made again when the splats, the body's sprites or what it wears change. Its parts_key is the body's parts when its request was made, as dirt_body_parts_key() writes them. |
| skin_overlays | alist(body zone = /datum/bodypart_overlay/dirt_skin): the overlay on each limb skin mess draws on. |
| skin_reads | What the limbs and eyes were drawn from when they last matched the skin's request (skin_read_again()): alist(body zone = /obj/item/bodypart/proc/dirt_sprite_reads(), "eyes" = dirt_eye_reads()), for skin_reads_for. |
| skin_reads_for | The skin's request skin_reads were read for. Another one reads them again. |
| taur_cloth | A taur suit's pools, its back splats along its wearer's taur body's back, made while a taur wears it. |
| underclothes_drawings | alist(underclothes key = /datum/dirt_drawing): each piece with splats' masks, made again when what's drawn changes, and none while the piece is off or hidden. |
| underclothes_overlay | The overlay on the chest drawing the underclothes' splats, while there are any. |
| underclothes_splats | A person's underclothes' splats: alist(underclothes key = list of /datum/dirt_splat, oldest first), keyed by the piece and its accessory (dirt_underclothes_key()). They stay while the piece is off or hidden. |
Procs | |
| add_mess | Puts a mess on a zone of this carrier: its skin or cloth, or the part in an organ slot. As a shot lands it, the
levels go on the zone's newest splat, up to DIRT_MESS_MAX_LEVEL, and what's left starts another splat at that level,
at most the top one, with a variant this carrier doesn't have on that zone yet while one is left. A variant given
places a new splat at levels with that variant. |
| add_underclothes_mess | Puts a mess on a zone of the underclothes a person wears in a slot, as add_mess() puts it on the skin. It stays with that piece, kept while it's off or hidden. |
| check_cover | Has the skin's masks made again if what the body wears over its skin changed since they were asked for, so its mess fades out beside what it wears now, and draws the body. |
| check_parts | Has the masks the body's parts shape made again if what it draws of them changed since they were asked for (a genital shown, hidden, layered otherwise, swapped or resized), and draws the body. The skin and each piece of underclothes are judged by the parts their own masks were asked for with, so a piece made again meanwhile can't hide skin masks made before; the garments by a change since this last looked. |
| clear_mess | Takes all of this carrier's mess off. |
| drop_part | Takes a part's splats and masks off, as it leaves the body. Its leaving draws the body. |
| drop_underclothes_overlay | Takes the underclothes overlay off, wherever it is. Nothing is drawn until the body's next update_body_parts(). |
| forget_skin_reads | Drops what the skin's sprites were last read from (skin_reads), which holds the limbs and eyes read, so none that leaves is kept: the next draw reads them again. |
| forget_underclothes_masks | Has every piece of underclothes' masks made again for what's drawn now: its splats stay with it, worn or not. Nothing is drawn until the body's next update_body_parts(). |
| fresh_mess_variant | Returns a variant of a zone's mess this carrier doesn't have on that zone yet, at random, or any once it has them all. |
| mess_changed | Draws a change to this carrier's splats: a person's skin and underclothes, a part of theirs, or an item's slot while it's worn. A part's change redraws the whole body, which a portal relay drawing the part, or a bulge look drawing it behind a cover, follows. |
| mess_count | Returns how many splats this carrier holds, parts and underclothes included. |
| note_skin_reads | Notes what some zones' limbs, and the eyes when asked, are drawn from now, for the skin's request (skin_reads): its zone sources name what they draw. |
| oldest_mess | Returns this carrier's oldest splat, parts and underclothes included, or null with none. |
| on_clean | Clears this carrier's mess when it's washed as the floor's decals are. |
| on_genital_updated | Has SSdirt look, once the change settles, whether the parts the body draws changed with a genital's sprite (an erection, a new size) and the masks they shape need making again (check_parts()). |
| on_limb_attached | Has the masks made again for the body a limb attached to the person makes, every limb shaping the others' silhouettes, and gives the limb a skin overlay if skin mess draws on it, and the chest the underclothes overlay. The attach draws the body. |
| on_limb_removed | Takes the skin overlay off a limb leaving the person, whose mess stays with them, lets go of it and of the eyes it may take (forget_skin_reads()), and has the masks made again for the body left. The removal draws the body. |
| on_organ_gained | Has SSdirt look again, once the change settles, at a body gaining a taur body, as a genital joining it would have it (check_parts()). The taur body's own images ask for its pools as they're drawn. |
| on_organ_lost | Takes a taur body's pools off as it leaves the body, as a genital leaving takes its share, and has SSdirt look again once the change settles. Its leaving draws the body. Eyes leaving are let go of (forget_skin_reads()). |
| on_overlay_changed | Follows what a person wears: a change to the underclothes has their masks made again for what's drawn now, and a change to any slot that covers skin has SSdirt check, once the slots settle, whether the skin's mess fades at other edges now (check_cover()). |
| on_worn_overlays | Draws an item's mess over it while a person wears it: inset images in its worn wrapper, from the wearer's cloth masks, moved back onto the body's tile by what build_worn_icon() moves the wrapper by (dirt_worn_shift()). On a taur suit, a sprite spanning the taur canvas (dirt_taur_fitted()), the suit's back splats draw as pools along the taur body's back too, on the canvas round that tile. Off the body it draws none. |
| parts_changed | Has every mask a body's parts shape made again, the old ones drawn meanwhile: the skin's, the underclothes', and the garments' it wears, which their own draws make again. Draws the body. |
| ready_cloth_masks | Returns the masks a worn item's cloth is drawn with on its wearer, or null while there are none to draw, asking for them as ready_skin_masks() does. Masks made for a body drawn from other sprites (another wearer, other eyes) are dropped and made again; a change to the parts its splats reach (dirt_surface_parts()) makes them again too, the old ones drawn meanwhile. |
| ready_part_masks | Returns the masks of a person's part's own mess, its share drawn with its front layer, or null while there are none to draw, asking for them as ready_skin_masks() does; SSdirt draws the whole body again once they're made. Masks made for another sprite of the part (an erection, a jiggle, another size) are dropped and made again: they wouldn't fit it. The vulva on bare skin takes the ring of skin round it, so its masks follow the body's template too. A part drawn at more than one layer (a butt's front and back images) draws its share only in the directions it shows over what it lies on (dirt_zone_layer()): the surface's masks take it in the rest. |
| ready_skin_masks | Returns the masks the skin's mess is drawn with on a limb, or null while there are none to draw. The first ask after a change queues them with SSdirt, which draws the body again once they're made; until then the masks before them are drawn, so mess already there stays while more is added. Masks made for other sprites than the body draws (a new size, a swapped limb, other eyes) are dropped and made again: on every draw each limb skin mess draws on checks its own, and the chest the arms, the hands and the eyes. Each is read again only once what it's drawn from has changed since it last matched (skin_reads), so a steady draw compares a few vars. They fade out beside what the body wears (dirt_cover_sprites()), and the parts the splats reach shape them (dirt_surface_parts()) as each draws over or under the skin in each direction: every front image over it, a butt's back image and the pecs guide under it. |
| ready_taur_cloth_masks | Returns the masks of a taur suit's pools on its wearer, or null while there are none to draw, asking for them as ready_skin_masks() does: its back splats along the back of the taur body it hides, as that body would draw them (ready_taur_masks()), over the whole taur canvas. Masks made for another taur body or rider are dropped and made again. |
| ready_taur_masks | Returns the masks of a person's taur body's pools, drawn with its own images, or null while there are none to draw, asking for them as ready_skin_masks() does; SSdirt draws the body again once they're made. They lie along the back of the taur body's sprite, keeping clear of the rider's mess, so masks made for another sprite (lying down, another kind) or another rider are dropped and made again. |
| ready_underclothes_masks | Returns the masks of each piece of a person's underclothes that has some drawn and is worn and shows now, asking for those not made yet as ready_skin_masks() does. Each is cloth's, kept to the pixels the piece shows, under those drawn over it, and shaped by the parts its splats reach (dirt_surface_parts()): pecs under a tank top, or a genital set to draw below the underwear. A piece off or hidden keeps its splats but draws none. |
| remove_mess | Takes one splat off this carrier, wherever it lies. |
| skin_besides_unchanged | Returns whether what the chest's draw checks of the skin's sprites besides its own, the arms and hands, the eyes and whether the head is a human's, is drawn from what it was when they last matched (skin_reads). |
| skin_read_again | Returns whether the body draws the sprites the skin's masks were made from, as a limb's draw checks them: its own, and for the chest the arms and hands, the eyes and whether the head is a human's (dirt_zone_sources_match(), which checks the eyes whichever limb asks). When it does, notes what they're drawn from (skin_reads). |
| stack_mess | Adds a mess to one surface's splats as add_mess() describes, and returns the splat it started, or the one it raised. |
| sync_skin_overlays | Puts a skin overlay on each limb skin mess draws on while the skin carries any, and takes them off once it doesn't. Nothing is drawn until the body's next update_body_parts(). |
| sync_underclothes_overlay | Puts the underclothes overlay on the chest while the underclothes carry mess, and takes it off once they don't. Nothing is drawn until the body's next update_body_parts(). |
Var Details
cloth 
An item's cloth masks, made from its wearer's body.
cover_key 
What the body wore over its skin when the skin's request was made, as dirt_sprites_key() writes it.
mess_splats 
This carrier's /datum/dirt_splat, oldest first: a person's skin, or an item's cloth.
part_drawings 
alist(ORGAN_SLOT_* = /datum/dirt_drawing): each part with splats' own masks, made again when its sprite changes.
part_mess_splats 
A person's parts' splats: alist(ORGAN_SLOT_* = list of /datum/dirt_splat, oldest first). The taur body's pools are ORGAN_SLOT_EXTERNAL_TAUR's.
parts_key 
The body's parts as dirt_body_parts_key() wrote them when check_parts() last looked, so a change since draws the garments it wears again, which check their own masks as they draw.
skin 
The skin's masks, made again when the splats, the body's sprites or what it wears change. Its parts_key is the body's parts when its request was made, as dirt_body_parts_key() writes them.
skin_overlays 
alist(body zone = /datum/bodypart_overlay/dirt_skin): the overlay on each limb skin mess draws on.
skin_reads 
What the limbs and eyes were drawn from when they last matched the skin's request (skin_read_again()): alist(body zone = /obj/item/bodypart/proc/dirt_sprite_reads(), "eyes" = dirt_eye_reads()), for skin_reads_for.
skin_reads_for 
The skin's request skin_reads were read for. Another one reads them again.
taur_cloth 
A taur suit's pools, its back splats along its wearer's taur body's back, made while a taur wears it.
underclothes_drawings 
alist(underclothes key = /datum/dirt_drawing): each piece with splats' masks, made again when what's drawn changes, and none while the piece is off or hidden.
underclothes_overlay 
The overlay on the chest drawing the underclothes' splats, while there are any.
underclothes_splats 
A person's underclothes' splats: alist(underclothes key = list of /datum/dirt_splat, oldest first), keyed by the piece and its accessory (dirt_underclothes_key()). They stay while the piece is off or hidden.
Proc Details
add_mess
Puts a mess on a zone of this carrier: its skin or cloth, or the part in an organ slot. As a shot lands it, the
levels go on the zone's newest splat, up to DIRT_MESS_MAX_LEVEL, and what's left starts another splat at that level,
at most the top one, with a variant this carrier doesn't have on that zone yet while one is left. A variant given
places a new splat at levels with that variant.
Arguments:
- zone: A DIRT_ZONE_* define.
- organ_slot: The part's ORGAN_SLOT_* define, or null for the skin or cloth.
- levels: How many levels it adds, 1 or more.
- variant: 0 to DIRT_MESS_VARIANTS - 1, or null.
- redraw: Whether to draw the change. A caller that changes more first, as a landing past the cap does, draws once after (mess_changed()), so no masks are made for splats it's about to take off.
- new_variant: The variant a splat started without
varianttakes, or null for one the zone doesn't have yet: a part takes the variant of the shot's splat on the surface under it.
Returns the splat it started, or the one it raised when it started none.
add_underclothes_mess
Puts a mess on a zone of the underclothes a person wears in a slot, as add_mess() puts it on the skin. It stays with that piece, kept while it's off or hidden.
Arguments:
- zone: A DIRT_ZONE_* define.
- piece: A DIRT_UNDERCLOTHES_* define the person wears.
- levels: How many levels it adds, 1 or more.
- variant: 0 to DIRT_MESS_VARIANTS - 1, or null.
- redraw: Whether to draw the change, as add_mess()'s.
Returns the splat it started or raised, or null when the person doesn't wear that piece.
check_cover
Has the skin's masks made again if what the body wears over its skin changed since they were asked for, so its mess fades out beside what it wears now, and draws the body.
check_parts
Has the masks the body's parts shape made again if what it draws of them changed since they were asked for (a genital shown, hidden, layered otherwise, swapped or resized), and draws the body. The skin and each piece of underclothes are judged by the parts their own masks were asked for with, so a piece made again meanwhile can't hide skin masks made before; the garments by a change since this last looked.
clear_mess
Takes all of this carrier's mess off.
Arguments:
- redraw: Whether to draw the change. Washing an item draws its slot itself.
drop_part
Takes a part's splats and masks off, as it leaves the body. Its leaving draws the body.
Arguments:
- organ_slot: The part's ORGAN_SLOT_* define.
drop_underclothes_overlay
Takes the underclothes overlay off, wherever it is. Nothing is drawn until the body's next update_body_parts().
Arguments:
- body: The person.
forget_skin_reads
Drops what the skin's sprites were last read from (skin_reads), which holds the limbs and eyes read, so none that leaves is kept: the next draw reads them again.
forget_underclothes_masks
Has every piece of underclothes' masks made again for what's drawn now: its splats stay with it, worn or not. Nothing is drawn until the body's next update_body_parts().
Arguments:
- drop_masks: Whether to stop drawing the masks made before, which no longer fit the body.
fresh_mess_variant
Returns a variant of a zone's mess this carrier doesn't have on that zone yet, at random, or any once it has them all.
Arguments:
- zone: A DIRT_ZONE_* define.
- piece: A DIRT_UNDERCLOTHES_* define for the underclothes a person wears in that slot, or null for the skin or cloth.
mess_changed
Draws a change to this carrier's splats: a person's skin and underclothes, a part of theirs, or an item's slot while it's worn. A part's change redraws the whole body, which a portal relay drawing the part, or a bulge look drawing it behind a cover, follows.
Arguments:
- organ_slot: The part whose splats changed, or null for the rest.
- parts_too: Whether parts' splats changed with the rest (a wash), so the whole body is drawn again.
- draw: Whether to draw a person now. A caller changing several of their surfaces at once draws them once after.
mess_count
Returns how many splats this carrier holds, parts and underclothes included.
note_skin_reads
Notes what some zones' limbs, and the eyes when asked, are drawn from now, for the skin's request (skin_reads): its zone sources name what they draw.
Arguments:
- body: The person.
- zones: The body zones.
- eyes: Whether to note the eyes and the head they're read through.
oldest_mess
Returns this carrier's oldest splat, parts and underclothes included, or null with none.
on_clean
Clears this carrier's mess when it's washed as the floor's decals are.
Arguments:
- source: The carrier.
- clean_types: CLEAN_TYPE_* flags.
on_genital_updated
Has SSdirt look, once the change settles, whether the parts the body draws changed with a genital's sprite (an erection, a new size) and the masks they shape need making again (check_parts()).
Arguments:
- source: The person.
- genital: The genital whose sprite changed.
on_limb_attached
Has the masks made again for the body a limb attached to the person makes, every limb shaping the others' silhouettes, and gives the limb a skin overlay if skin mess draws on it, and the chest the underclothes overlay. The attach draws the body.
Arguments:
- source: The person.
- limb: The limb being attached.
- special: Whether it's swapped without the usual effects.
- lazy: Whether the person is still being made.
on_limb_removed
Takes the skin overlay off a limb leaving the person, whose mess stays with them, lets go of it and of the eyes it may take (forget_skin_reads()), and has the masks made again for the body left. The removal draws the body.
Arguments:
- source: The person.
- limb: The limb being removed.
- special: Whether it's swapped without the usual effects.
- dismembered: Whether it was cut off.
on_organ_gained
Has SSdirt look again, once the change settles, at a body gaining a taur body, as a genital joining it would have it (check_parts()). The taur body's own images ask for its pools as they're drawn.
Arguments:
- source: The person.
- organ: The organ gained.
- special: Whether it was put in without the usual effects.
on_organ_lost
Takes a taur body's pools off as it leaves the body, as a genital leaving takes its share, and has SSdirt look again once the change settles. Its leaving draws the body. Eyes leaving are let go of (forget_skin_reads()).
Arguments:
- source: The person.
- organ: The organ lost.
- special: Whether it was taken out without the usual effects.
on_overlay_changed
Follows what a person wears: a change to the underclothes has their masks made again for what's drawn now, and a change to any slot that covers skin has SSdirt check, once the slots settle, whether the skin's mess fades at other edges now (check_cover()).
Arguments:
- source: The person.
- cache_index: The overlays_standing slot applied or removed.
on_worn_overlays
Draws an item's mess over it while a person wears it: inset images in its worn wrapper, from the wearer's cloth masks, moved back onto the body's tile by what build_worn_icon() moves the wrapper by (dirt_worn_shift()). On a taur suit, a sprite spanning the taur canvas (dirt_taur_fitted()), the suit's back splats draw as pools along the taur body's back too, on the canvas round that tile. Off the body it draws none.
Arguments:
- source: The item.
- overlays: build_worn_icon()'s separate overlays, added to.
- standing, icon_file, bodyshape: Unused.
- draw_target: The item's own sprite as worn.
- isinhands: Whether it's drawn held.
parts_changed
Has every mask a body's parts shape made again, the old ones drawn meanwhile: the skin's, the underclothes', and the garments' it wears, which their own draws make again. Draws the body.
ready_cloth_masks
Returns the masks a worn item's cloth is drawn with on its wearer, or null while there are none to draw, asking for them as ready_skin_masks() does. Masks made for a body drawn from other sprites (another wearer, other eyes) are dropped and made again; a change to the parts its splats reach (dirt_surface_parts()) makes them again too, the old ones drawn meanwhile.
Arguments:
- garment: The item.
- wearer: Who wears it.
ready_part_masks
Returns the masks of a person's part's own mess, its share drawn with its front layer, or null while there are none to draw, asking for them as ready_skin_masks() does; SSdirt draws the whole body again once they're made. Masks made for another sprite of the part (an erection, a jiggle, another size) are dropped and made again: they wouldn't fit it. The vulva on bare skin takes the ring of skin round it, so its masks follow the body's template too. A part drawn at more than one layer (a butt's front and back images) draws its share only in the directions it shows over what it lies on (dirt_zone_layer()): the surface's masks take it in the rest.
Arguments:
- organ_slot: The part's ORGAN_SLOT_* define.
- source: What the part draws now, from its images in the layers its kind is read from (dirt_part_images()), or null.
ready_skin_masks
Returns the masks the skin's mess is drawn with on a limb, or null while there are none to draw. The first ask after a change queues them with SSdirt, which draws the body again once they're made; until then the masks before them are drawn, so mess already there stays while more is added. Masks made for other sprites than the body draws (a new size, a swapped limb, other eyes) are dropped and made again: on every draw each limb skin mess draws on checks its own, and the chest the arms, the hands and the eyes. Each is read again only once what it's drawn from has changed since it last matched (skin_reads), so a steady draw compares a few vars. They fade out beside what the body wears (dirt_cover_sprites()), and the parts the splats reach shape them (dirt_surface_parts()) as each draws over or under the skin in each direction: every front image over it, a butt's back image and the pecs guide under it.
Arguments:
- limb: The limb asking.
ready_taur_cloth_masks
Returns the masks of a taur suit's pools on its wearer, or null while there are none to draw, asking for them as ready_skin_masks() does: its back splats along the back of the taur body it hides, as that body would draw them (ready_taur_masks()), over the whole taur canvas. Masks made for another taur body or rider are dropped and made again.
Arguments:
- garment: The item.
- wearer: The taur wearing it.
ready_taur_masks
Returns the masks of a person's taur body's pools, drawn with its own images, or null while there are none to draw, asking for them as ready_skin_masks() does; SSdirt draws the body again once they're made. They lie along the back of the taur body's sprite, keeping clear of the rider's mess, so masks made for another sprite (lying down, another kind) or another rider are dropped and made again.
Arguments:
- source: The taur body as it draws now (/datum/bodypart_overlay/mutant/taur_body/proc/dirt_read_source()), or null.
ready_underclothes_masks
Returns the masks of each piece of a person's underclothes that has some drawn and is worn and shows now, asking for those not made yet as ready_skin_masks() does. Each is cloth's, kept to the pixels the piece shows, under those drawn over it, and shaped by the parts its splats reach (dirt_surface_parts()): pecs under a tank top, or a genital set to draw below the underwear. A piece off or hidden keeps its splats but draws none.
remove_mess
Takes one splat off this carrier, wherever it lies.
Arguments:
- splat: The splat.
- redraw: Whether to draw the change, as add_mess()'s.
Returns the ORGAN_SLOT_* define of the part it was on, or null for the skin, the cloth or the underclothes: what to draw again (mess_changed()).
skin_besides_unchanged
Returns whether what the chest's draw checks of the skin's sprites besides its own, the arms and hands, the eyes and whether the head is a human's, is drawn from what it was when they last matched (skin_reads).
Arguments:
- body: The person.
skin_read_again
Returns whether the body draws the sprites the skin's masks were made from, as a limb's draw checks them: its own, and for the chest the arms and hands, the eyes and whether the head is a human's (dirt_zone_sources_match(), which checks the eyes whichever limb asks). When it does, notes what they're drawn from (skin_reads).
Arguments:
- body: The person.
- limb: The limb asking.
stack_mess
Adds a mess to one surface's splats as add_mess() describes, and returns the splat it started, or the one it raised.
Arguments:
- splats: The surface's splats, oldest first. Added to.
- zone, levels, variant, new_variant: As add_mess()'s.
sync_skin_overlays
Puts a skin overlay on each limb skin mess draws on while the skin carries any, and takes them off once it doesn't. Nothing is drawn until the body's next update_body_parts().
Arguments:
- body: The person.
sync_underclothes_overlay
Puts the underclothes overlay on the chest while the underclothes carry mess, and takes it off once they don't. Nothing is drawn until the body's next update_body_parts().
Arguments:
- body: The person.