World & rooms

Crowds

Who the strangers in a venue are, from Crowds/*.ulcrowd files: weighted roles with a job, stats, personality and dress.

A room fills with strangers (the CROWD block of its recipe says how many). Without a crowd profile they are anyone: a random sex, random clothes, no job. A crowd profile gives a venue tag a weighted list of roles; every stranger the room fills with rolls one.

The base game ships one, for the back alley: 70% of the people there sell, use or prey, the rest cut through.

A profile

Crowds/<anything>.ulcrowd, JSON:

json{
  "profiles": [
    {
      "tags": ["alley"],
      "roles": [
        { "id": "street_sex_worker", "weight": 26, "sex": "female", "job": "Sex worker",
          "presets": "age_groups/twenties", "min_sexiness": 4,
          "stats": { "intoxication": 15 },
          "vars": { "ul_vc_dep_opioids": 30 },
          "facets": { "risk_tolerance": 0.75, "trust": 0.2 } },
        { "id": "user", "weight": 20,
          "stats": { "intoxication": 45, "energy": 20 },
          "vars": { "ul_vc_dep_opioids": 70 },
          "facets": { "impulsivity": 0.85, "dependency": 0.8 } },
        { "id": "anyone", "weight": 30 }
      ]
    }
  ]
}
  • tags (or a single tag): the venue tags this profile peoples.
  • Profiles replace by tag across mods: a later file with the same tag replaces the whole role list, so re-peopling a base venue is one file.
  • weight is relative; a role with weight 0 is never rolled.

A role

Field Meaning
id A name for your own reading; nothing else uses it
weight Relative weight among the profile's roles
sex female, male or any (default)
job The title the person sheet shows (what Actor:setJob writes). Empty: no job
presets CharGen presets, comma-separated. The person is generated with them instead of taken from the pre-made filler pool, so the venue opens a little slower
dress A context keyword for the auto-dresser (what Actor:dressUniform passes internally): Uniform, Nurse, Doctor, Police, Prison, Wedding unlock those pieces
min_sexiness Re-dress (up to three times) until the outfit's sexiness reaches this; the scale is the clothes' Sexiness field, 1 to 5 per piece
stats NPC stats set at spawn (intoxication, energy, mood, money, martial, …)
vars Per-person variables, what Lua reads with Actor:getVar. A number or a string. ul_Vice reads ul_vc_dep_<track> (0-100, tracks alcohol, uppers, party, opioids) as a person's dependence, so these two lines make a stranger a user its scenes recognise
facets Personality facets, 0 to 1, by the ids in Personality/*.ulpersonality (impulsivity, aggression, trust, rule_respect, libido, …). The rest of the personality is generated around them
modder

A stranger the player gets to know keeps all of this: the job, the dependence, the personality. A role is the person's starting point, not a costume.

The base vocabulary

The alley (alley, three per city on side streets) ships with: street sex workers (26 + 6), users (20), a dealer titled "Courier" like ul_Vice's (10), muggers (8), anyone (30).