dirt_aim 
A mess aimed at a zone: one deposit's random draws, made once, and the features each level draws from them, as the reference generator's aimed cause draws them.
- Level 1: one streak laid along the shot's direction, ending in a small lump with a glint, and a drop. On the butt a shot beads and runs down instead: across the buttocks streaks read as a crack or a scrawl.
- Levels 2 and 3: level 1, then separate runs straight down instead of fills, each from a bead with a one-pixel highlight, with skin between them in every view (dirt_runs_apart()); fills read as a bib, a vest or a dressing. The face keeps its earlier look up to level 3: more streaks with drips, broken into beads at level 3.
- Level 4, the top: level 3, then a glaze over it from draws of its own: two translucent tongues hanging past the zone, three beads with highlights and runs, and two small pools.
Every draw happens whatever the level, so the levels nest, each level its own features from the same draws.
Vars | |
| angle | The shot's direction, in degrees: up and across. |
|---|---|
| areas | The areas its shots land in, each list(limb, lowest theta, highest theta, lowest h, highest h). |
| beaded | Whether its shots bead and run down instead of streaking. |
| bounded | Whether its streaks end inside the zone's heights. |
| candidates | The twelve shots drawn, in draw order, each list(limb, theta, h, aim, length, width, drip fraction, seed, area). |
| covers | The top level's seven draws, each list(limb, theta, h, size, length, seed, area). |
| drops | The six drops drawn, each list(limb, theta, h, radius, seed). |
| hung_parts | Levels 2 and 3's runs and drops once made (hang_runs()), which both draw from. |
| made_levels | Each level's features once made: the levels above share the features they nest, and their pixels on the view. |
| runs | The thighs' drips the features being made have so far, each list(limb, top, bottom). |
| staggered | Whether each clamped end takes its own bound. |
| streaks | The shots kept for streaks, five at most with their starts 3 px apart, in the same form. |
| zone | The DIRT_ZONE_* define it's aimed at. |
Procs | |
| New | Makes a deposit's draws from the "aimed_ |
| capped | Returns a drip's or a run's bottom: on the thighs it ends above the knee, at its own inset, and a matching run on the other leg is halved; elsewhere it's left as it is. |
| covered | Returns the features of the top level, the glaze: level 3's exactly, then on top, from the deposit's own draws: |
| features | Returns the features of one level, made once. You should NEVER modify the list it returns. |
| glint_at | Returns the glint over a streak's end or a bead: 0.3 px back round the limb and 0.3 px up. |
| hang_runs | Returns levels 2 and 3's runs and drops, made once for both: list(each run or drop as list(its group, its features), level 2's carry-on from level 1's drop, that drop). |
| hanging | Returns a run hung straight down from a point, ending in a 2 px bulb. One carried on goes past its bulb to a smaller one from level 3: with no room for another run, a level-up showed nothing. |
| hung | Returns the features of levels 2 and 3 off the face: level 1's exactly, then runs straight down instead of fills. Level 1's streak hangs a run from part of its length (level 2) and level 1's drop one from its middle (level 3). Later shots come from the twelve drawn in draw order, each landing at level 1's length at least DIRT_AIM_RUN_PITCH px round its limb from every shot and from level 1's drop, as a bead with a one-pixel highlight and one run straight down. The other drops follow. A run plan holds level 3's set, so each view keeps the same ones at every level. |
| land | Returns where a streak starts and ends: list(its start's h, its end's theta, its end's h). Laid along the shot, then held in its zone's heights where the zone bounds them. |
| odd_side | Returns whether a streak's or a drip's insets are odd: odd on one side of a pair, even on the other, the shot's direction picking which. On the thighs the sides are the legs, elsewhere either side of the midline. |
| streaked | Returns the features of level 1, and of the face's levels 2 and 3: streaks laid along the shot, each ending in a small lump with a glint, drips running down from them from level 2, and drops round them. At level 3 each streak breaks into beads. |
| tilted | Returns a groin streak's direction turned 45 degrees off upright, on the same side: two side by side up the belly read as bars. |
Var Details
angle 
The shot's direction, in degrees: up and across.
areas 
The areas its shots land in, each list(limb, lowest theta, highest theta, lowest h, highest h).
beaded 
Whether its shots bead and run down instead of streaking.
bounded 
Whether its streaks end inside the zone's heights.
candidates 
The twelve shots drawn, in draw order, each list(limb, theta, h, aim, length, width, drip fraction, seed, area).
covers 
The top level's seven draws, each list(limb, theta, h, size, length, seed, area).
drops 
The six drops drawn, each list(limb, theta, h, radius, seed).
hung_parts 
Levels 2 and 3's runs and drops once made (hang_runs()), which both draw from.
made_levels 
Each level's features once made: the levels above share the features they nest, and their pixels on the view.
runs 
The thighs' drips the features being made have so far, each list(limb, top, bottom).
staggered 
Whether each clamped end takes its own bound.
streaks 
The shots kept for streaks, five at most with their starts 3 px apart, in the same form.
zone 
The DIRT_ZONE_* define it's aimed at.
Proc Details
New
Makes a deposit's draws from the "aimed_
Arguments:
- zone: A DIRT_ZONE_* define, not DIRT_ZONE_COCK.
- variant: 0 to DIRT_MESS_VARIANTS - 1.
capped
Returns a drip's or a run's bottom: on the thighs it ends above the knee, at its own inset, and a matching run on the other leg is halved; elsewhere it's left as it is.
Arguments:
- limb: The DIRT_LIMB_* define it runs down.
- top: The h it starts at.
- bottom: The h it would end at.
- seed: The shot's seed.
- knee: The lowest h of its area.
covered
Returns the features of the top level, the glaze: level 3's exactly, then on top, from the deposit's own draws:
- two translucent tongues hanging from where they landed, running past the zone;
- three opaque beads, each with a one-pixel highlight and a run straight down ending in a bulb;
- two small pools with their grey underside, a translucent rim and a highlight. A tongue that reaches the torso's last row carries on down the leg under it, never onto the arms. Seen in profile, where the arm hides the back, the back's coat shows as a thin run-off down the back of the near leg. The coat fades at an outline and breaks near a profile's (dirt_rasterise_level()). The opaque runs keep apart from level 3's and each other, as runs do: beside them they fused into panels that read as garments. The beads, the pools and their highlights stay where they land.
features
Returns the features of one level, made once. You should NEVER modify the list it returns.
Arguments:
- level: 1 to DIRT_MESS_MAX_LEVEL.
glint_at
Returns the glint over a streak's end or a bead: 0.3 px back round the limb and 0.3 px up.
Arguments:
- limb: The DIRT_LIMB_* define it lies on.
- end_theta, end_along: The streak's end or the bead.
- glint_type: The glint's type: a highlight lights one pixel only.
hang_runs
Returns levels 2 and 3's runs and drops, made once for both: list(each run or drop as list(its group, its features), level 2's carry-on from level 1's drop, that drop).
hanging
Returns a run hung straight down from a point, ending in a 2 px bulb. One carried on goes past its bulb to a smaller one from level 3: with no room for another run, a level-up showed nothing.
Arguments:
- limb: The DIRT_LIMB_* define it hangs on.
- top_theta, top_along: Where it hangs from.
- spread: Its drip draw, 0.2 to 0.8, which sets its length.
- seed: The shot's seed.
- knee: The lowest h of its area, which a thigh's run stays above.
- carry: Whether it carries on past its bulb at level 3.
hung
Returns the features of levels 2 and 3 off the face: level 1's exactly, then runs straight down instead of fills. Level 1's streak hangs a run from part of its length (level 2) and level 1's drop one from its middle (level 3). Later shots come from the twelve drawn in draw order, each landing at level 1's length at least DIRT_AIM_RUN_PITCH px round its limb from every shot and from level 1's drop, as a bead with a one-pixel highlight and one run straight down. The other drops follow. A run plan holds level 3's set, so each view keeps the same ones at every level.
Where level 2 shows nothing new in the zone's main facing, level 1's drop runs a little to a smaller bead, so every level-up shows (dirt_runs_apart() decides).
Arguments:
- level: 2 or 3.
land
Returns where a streak starts and ends: list(its start's h, its end's theta, its end's h). Laid along the shot, then held in its zone's heights where the zone bounds them.
Arguments:
- limb: The DIRT_LIMB_* define it lies on.
- start_theta, start_along: Where it starts.
- aim: The streak's direction, in degrees.
- streak_length: Its length in pixels.
- seed: The shot's seed.
- area: The area it landed in, list(limb, lowest theta, highest theta, lowest h, highest h).
odd_side
Returns whether a streak's or a drip's insets are odd: odd on one side of a pair, even on the other, the shot's direction picking which. On the thighs the sides are the legs, elsewhere either side of the midline.
Arguments:
- limb: The DIRT_LIMB_* define it lies on.
- theta: Where it starts round the limb, which the thighs don't read.
streaked
Returns the features of level 1, and of the face's levels 2 and 3: streaks laid along the shot, each ending in a small lump with a glint, drips running down from them from level 2, and drops round them. At level 3 each streak breaks into beads.
Arguments:
- level: 1 to 3.
tilted
Returns a groin streak's direction turned 45 degrees off upright, on the same side: two side by side up the belly read as bars.
Arguments:
- aim: Its direction, in degrees.