Tuning
Every number that shapes what people do, feel, remember and say, and how their relationships and beliefs move, is a setting a game can change: how often people have breaks, how quickly they make friends, how fast they forget, how readily they gossip or report a crime. There are three places to change them:
- At creation: the core’s in
Tyrell.create({ config }), each module’s inmoduleConfig: { reverie: { ... }, ... }. - Per person: a person’s own pace for the headline knobs, in their definition (
tune). - During play:
world.tune(module, values), an input, so time walk replays it and saves keep it.
Every setting defaults to what Tyrell always did, and every headline knob to 1, so a world made with no settings is exactly the world it was before they were settings, byte for byte.
- The headline knobs
- An example
- Per person
- During play
- Every setting: Core, Reverie, Fellowship, Wormtongue, Cityspeak, Voice, Bree, Mentat, Gaff, Ceres, Cradle, Athelas, Delos, Morgul, Joi
The headline knobs
A headline knob is a plain multiplier on a whole behavior, for a game that wants “friendships form faster” without knowing which numbers make friendships. Each is 1 by default (multiplying by 1 changes nothing), 2 is twice as much or as often, 0.5 half, and 0 switches the behavior off. Most can be had per person too: the world’s knob times the person’s own.
| Module | Knob | What it scales | Per person |
|---|---|---|---|
Core (config) |
needs |
How fast every need rises: 2 and people eat, sleep and seek company twice as often | yes |
habits |
How fast habits form and fade (habitFast, habitSlow, habitDrift); 0 freezes them |
yes | |
learning |
How fast skills are learned (every skill’s rate, on top of talents); 0 learns nothing | yes | |
wishes |
How often wishes and dreams come (wishChance); 0 brings none |
yes | |
crowds |
How many strangers pass each hour (every region’s perHour) |
no | |
| Reverie | breaks |
How often breaks come, at a mood under a threshold; 0 never | yes |
forgetting |
How fast memories and beliefs fade (memoryDecay over the hours, beliefDecay and sawDecay over the days); 0 never |
yes | |
feelings |
How much feelings move the mood (each feeling’s weight in it) | yes | |
stress |
How much stress everything adds (bad feelings, acting against their values) | yes | |
| Fellowship | friendship |
How fast friendships and enmities form: the regard each meeting adds or takes away | yes (the one whose regard it is) |
romance |
How fast attraction grows from time together | yes | |
fading |
How fast relationships fade: regard drifting back to nothing, and how soon faint acquaintances are forgotten | yes | |
| Wormtongue | gossip |
How readily gossip spreads: the chance per meeting that someone passes something on | yes (the teller) |
reporting |
How readily crimes are reported: the chance a witness reports | yes (the witness) | |
heat |
How much heat each report adds | yes (the actor, if a person) | |
cooling |
How fast heat cools (heatDecay over the days) |
yes (the actor, if a person) | |
lies |
How readily a dishonest teller shifts the blame (lieChance) |
yes (the teller) | |
| Cityspeak | chatter |
How chatty people in view are: the chance a meeting starts a bark exchange, and how long it runs. Barks change nothing in the world, so neither does this | yes (both people’s) |
| Voice | chatter |
How chatty the one talked to is: how many beats they’ll talk for (patience), and how readily they raise something of their own | yes |
| Bree | warmth |
How much good exchanges warm people: the regard (and attraction) a good one gives | yes (the one whose regard it is) |
quarrels |
How readily people quarrel: the regard a bad exchange takes away, and how appealing hostile kinds are when they meet | yes (whose regard it is; the one who’d pick the quarrel) | |
escalation |
How readily a sour turn becomes an argument, and an argument a fight; 0 nothing escalates | yes (the one who’d escalate) | |
grudges |
How much a bad exchange leaves a grudge; 0 none | yes (the one who’d hold it) | |
forgiveness |
How readily people forgive: how fast grudges fade, and how much an apology or making up takes off them; 0 nobody forgives | yes (the one who holds the grudge) | |
talk |
How often people strike up exchanges when they meet, and how long they talk; 0 nobody does on their own | yes (both people’s) | |
| Mentat | persistence |
How long people keep at a plan: the replans before they give up (maxTries) |
yes |
scruples |
What their scruples cost a way of getting something: the extra cost of illegal ways and of ways against their values (the very honest and the devout still never do them) | yes | |
| Gaff | events |
How often storylets fire on their own | no |
intensity |
How much a firing raises its subject’s intensity | no | |
| Ceres | prices |
How much prices put people off (the price factor); 0: price is no object | yes |
| Cradle | courtship |
How readily couples form on their own (autoPair’s thresholds are divided by it) |
yes (each side’s own) |
births |
How often couples have children (fertility) |
yes (both partners’) | |
deaths |
How likely people are to die of old age | yes | |
| Athelas | contagion |
How catching courses are (every course’s chance per hour together) | yes (the one who might catch it) |
duration |
How long courses last (every phase’s minutes) | yes (the one who has it) | |
| Delos | mutation |
How often genomes mutate: trait jumps, gifts and every gene’s mutate |
no |
variation |
How far children stray from their parents (every blended value’s noise); 0: a child is exactly the blend | no | |
| Morgul | violence |
How readily anyone chooses an action tagged harm; 0: nobody ever does |
yes |
lethality |
How often harm at its worst kills (0 by default: nobody dies of harm) | yes (the one who’d die) | |
vengeance |
How strongly harm turns into a wish for revenge | yes (the one who’d want it) | |
caution |
How much people steer clear of danger they know of (a trap, a taint, a place they were hurt) | yes | |
healing |
How fast wounds heal (a wound’s phases last 1 / healing as long) | yes (the one hurt) | |
suspicion |
How readily people suspect someone of harm they didn’t see done, and how strongly | yes (the one who’d suspect) |
Joi has no headline knob: it never changes the world. Tyrell.CORE_KNOBS and each module’s knobs list them, with 'person' or 'world' for whether a person can have their own.
An example
const world = Tyrell.create({
seed: 'my-town',
config: { needs: 1.2 }, // a hungrier, sleepier town
moduleConfig: {
fellowship: { friendship: 1.5, fading: 0.5 }, // friends sooner, and for longer
wormtongue: { gossip: 0.7, reporting: 1.5 }, // discreet, but law-abiding
reverie: { breaks: 0.5, minor: [0.3, 6] }, // a knob and a finer setting together
},
});
world.person('kofi', { name: 'Kofi', tune: { fellowship: { friendship: 2 }, cityspeak: { chatter: 1.5 } } });
// an options screen: a slider for how much the town gossips
slider.onchange = (v) => world.tune('wormtongue', { gossip: v });
world.tuning('wormtongue').gossip; // what's in force now
Rocinante shows the same with buildRocinante(Tyrell, { tuned: true }): friendships form half as fast again and fade half as fast, Kofi makes friends twice as fast, Sam gossips, lies and snaps, and Ruth forgets nothing in a hurry. It also takes moduleConfig, over its own.
Per person
A person’s definition can carry their own pace for the headline knobs, by module ('core' for the core’s):
world.person('sam', { tune: { wormtongue: { gossip: 1.5, lies: 2 }, reverie: { breaks: 2 }, core: { needs: 0.8 } } });
What applies to them is the world’s knob (as declared and tuned) times their own; leave a knob out and it’s 1. Only the knobs marked per person in the table above can be had this way: the others aren’t anyone’s (a storylet, a stranger, a newborn’s genome). When a knob involves two people, the table says whose counts: regard is the holder’s (friendship for Kofi’s regard for Sam is Kofi’s), gossip and lies are the teller’s, reporting the witness’s, contagion the catcher’s; a couple’s births is both partners’ together, and a bark exchange’s chatter is both people’s.
Like the rest of a definition, tune is saved with the person (a saved person keeps the definition they had). To change it during play, use world.tune(module, values, id).
world.tuning(module, id) gives the knobs as they apply to someone: world.tuning('reverie', 'sam') is { breaks: 2, forgetting: 1, feelings: 1, stress: 1 } (the world’s times Sam’s own).
During play
The settings are definitions, not state: changing world.config or a module’s config by hand mid-game would be lost on a load and missed by a rewind, which replays history with whatever is current. To change them during play (a difficulty setting, a slider, a story beat that makes the town paranoid), use world.tune:
world.tune('fellowship', { friendship: 2 }); // any setting of a module, by name
world.tune('core', { needs: 1.5, wishChance: 0.8 }); // the core's ('core')
world.tune('wormtongue', { reportDelay: [5, 20] }); // finer settings too, not only the knobs
world.tune('fellowship', { friendship: null }); // back to what was declared
world.tune('fellowship', null); // the whole module back
world.tune('reverie', { breaks: 0.5 }, 'sam'); // one person's own knobs (their `tune`)
- It’s an input. Esper records it and replays it at the moment it was made: rewind past it and it’s undone, play forward and it comes again; a new one in the past starts a new timeline (
branch), as any input does. - It’s state. The overrides are kept in
world.s.tune(a person’s in their definition), plain JSON, soworld.save()keeps them andworld.load()brings them back. Nothing is kept until something is tuned, and putting everything back removes it again. - It’s over what was declared. The setting in force is the override if there is one, else what the game declared at creation (which it declares again on every start).
world.configandworld.reverie.configstay as declared;world.tuning(module)shows what’s in force, andworld.cfgis the core’s config in force. - It checks what it’s given. The module must be switched on, the setting must exist, and the value must be plain data of the same kind as the default (a number for a number, a list for a list); a person’s knobs must be numbers, 0 or more. Otherwise it throws, and nothing is recorded.
minutesPerSecondandbudgetMsaren’t tuned: they change nothing that happens, so setworld.configdirectly. - Needs keep their rise. Changing how fast needs rise (
needs) keeps everyone’s rise so far first, as a course does, so levels don’t jump. - Some things are worked out from when they were last set. A memory’s fade, stress, heat, a pastime’s tolerance and a skill’s slipping are kept as a value and a time, and worked out when they’re read. A new pace for one of them applies to the whole time since then (a memory made yesterday fades, from today, as if the new pace had held since yesterday). Anything drawn when it starts (a course’s phase, a report’s delay) keeps its draw.
Tuning from inside a listener waits for the engine’s current work, like any input.
Every setting
Each table lists a part’s settings: the name, the default, and what it does and which way to turn it. Headline knobs are marked knob.
Core
Tyrell.create({ config: { ... } }); during play, world.tune('core', { ... }). See Deciding for how the decision settings work together.
| Setting | Default | What it does |
|---|---|---|
minutesPerSecond |
1 | Game minutes per real second at speed 1 (world.tick). Set it directly at any time |
week |
7 | Days in a week, for routine variants and job days |
urgent |
0.85 | A need above this is urgent and lifts what meets it above routines (a need’s urgent overrides it). Lower: needs break routines sooner |
urgentRank |
1.5 | The rank an urgent need lifts an option to |
desperateRank |
2.5 | The rank a desperate need lifts an option to, plus desperateSlope a point past desperate |
storyRank |
3 | The rank of a directive that doesn’t say its own |
jobRank |
2 | The rank of a shift’s work. Under desperateRank, so the desperate leave work; over urgentRank, so the merely urgent don’t |
routineRank |
1 | The rank of a routine entry that doesn’t say its own |
cut |
0.25 | Options under this share of the best weight are dropped. Higher: people pick the obvious more often |
top |
3 | At most this many options go into the draw |
power |
2 | The draw is weighted by weight to this power. Higher: more predictable; lower: more varied |
inertia |
1.15 | Bonus for carrying on with what they’re doing. Higher: people stick at things |
repeat |
0.75 | Multiplier for choosing the same thing again soon after (within repeatWindow). Lower: more variety |
travelScale |
30 | Travel factor 1 / (1 + minutes / travelScale). Lower: people stay nearer home |
placesPerAction |
4 | How many places (nearest first) are weighed per action |
idle |
20 | Minutes someone with nothing to do waits before thinking again |
backoff |
15 | Minutes an action is ruled out at a place after it failed there |
budgetMs |
4 | Milliseconds of simulation per world.tick frame. Set it directly at any time |
logSize |
1000 | Westmarch log entries kept |
storySize |
0 | Irulan’s story: entries that matter kept beyond the log, so storylines last for weeks (0: off; see Irulan) |
storyMin |
0.3 | What an entry must weigh to be kept in Irulan’s story |
decisions |
12 | Decisions Palantír keeps per person |
checksOnce |
false | A check (a boundary or an urge) already queued for someone at a moment isn’t queued again, so each moment is thought over once |
habitFast |
0.25 | How fast the fast habit weight learns from how a go turned out |
habitSlow |
0.05 | How fast the slow weight follows the fast one |
habitDrift |
0.02 | How far the fast weight is pulled back toward 1 each time it learns. Higher: habits fade sooner; 0 with habitFast and habitSlow 0 leaves only the game’s rewards to move them |
habitMin |
0.25 | Lowest habit weight |
habitMax |
4 | Highest habit weight |
compensate |
true | Compensate considerations for their number (IAUS) |
pallGain |
0.35 | Tolerance one go at a pastime adds (a pastime’s gain overrides it) |
pallDecay |
0.08 | Tolerance lost per hour (a pastime’s decay overrides it) |
pallPenalty |
0.6 | The share of a pastime’s appeal lost at full tolerance (a pastime’s penalty overrides it) |
wishMax |
2 | Wishes held at once, not counting a dream |
wishHours |
[8, 13, 17] |
The hours a new wish (or dream) may come |
wishChance |
0.5 | The chance of one at each of those hours |
wishMinutes |
2160 | Minutes before an unmet wish fades (a wish’s minutes overrides it) |
wishPull |
1.35 | How much more a wish’s toward options weigh (a wish’s pull overrides it) |
needs |
1 | knob How fast every need rises |
habits |
1 | knob How fast habits form and fade |
learning |
1 | knob How fast skills are learned |
wishes |
1 | knob How often wishes and dreams come |
crowds |
1 | knob How many strangers pass each hour (the world’s only) |
traitDefault |
0.5 | The trait someone has when their definition doesn’t give it (the trait term, and every module that reads traits: honesty, courage, thrift…) |
needStart |
0.2 | Where a need starts, for one with no start |
needCurve |
'pow1.5' |
The curve a need’s level goes through to make its urgency, for one with no curve |
reliefFloor |
0.05 | An option’s relief for a need counts as no more than the need’s level, but at least this. Higher: needs nearly met still pull |
liftRelief |
0.3 | An urgent need lifts an option’s rank only if it relieves at least this much. Lower: smaller things break routines |
desperate |
0.97 | A need this high (or its urgent, if higher) is desperate: it lifts options above work |
desperateSlope |
10 | Rank added per point of level past desperate, so the starving wake the exhausted |
habitBest |
2 | A go counts as at most this many times as good as expected when habits learn |
habitDone |
0.2 | The share of a go that must be done for habits to learn from it |
nudgeSlow |
0.25 | The share of a reward (world.reward) that reaches the slow habit |
pallFrom |
0.05 | Below this tolerance a pastime doesn’t pall at all |
pallDone |
0.2 | The share of a go at a pastime that must be done for it to add tolerance |
repeatWindow |
90 | Minutes after doing something that choosing it again counts as did it last |
targets |
6 | Most people an action aimed at someone is weighed against at once |
meetMax |
3 | Most people someone meets on starting something with others about (regard, gossip, colds all come from meetings). Higher: news and colds travel faster in crowds |
meetMinutes |
3 | The shortest time together, in minutes, that counts as meeting |
awayNeeds |
0.4 | Coming back from away, needs are at most this |
skillRate |
0.02 | Level gained per hour of practice, for a skill with no rate |
skillGrace |
3 | Days without practice before a skill with decay starts to slip, for one with no grace |
Reverie
moduleConfig: { reverie: { ... } }. See Reverie.
| Setting | Default | What it does |
|---|---|---|
base |
0.6 | The mood with no feelings and needs met |
needWeight |
0.25 | How much unmet needs drag the mood |
emotionFloor |
0.08 | An emotion shows only above this strength; under it they’re fine |
minor |
[0.35, 4] |
Under this mood a minor break can come, on average this many days apart. Raise the mood to make them commoner |
major |
[0.2, 0.8] |
The same for major breaks |
extreme |
[0.08, 0.5] |
The same for extreme breaks |
memoryCap |
24 | Memories kept (not counting core ones); the weakest goes |
coreCap |
8 | Core memories kept |
memoryDecay |
0.995 | Memory strength kept per game hour. Lower: they forget faster |
beliefFloor |
0.05 | Beliefs weaker than this are forgotten |
beliefDecay |
0.97 | Belief strength kept per day, for what they were told. Lower: they forget faster |
stressShort |
720 | Half-life of short-term stress, in minutes |
stressLong |
10080 | Half-life of long-term stress, in minutes |
breaks |
1 | knob How often breaks come |
forgetting |
1 | knob How fast memories and beliefs fade |
feelings |
1 | knob How much feelings move the mood |
stress |
1 | knob How much stress builds |
stackMul |
0.8 | Each extra stack of a feeling counts this share of the one before, for a feeling with no stackMul |
feelingStress |
0.5 | A bad feeling with no stress adds this share of its weight as stress |
needEmotion |
0.7 | A need over this level shows as its emotion (hunger as irritable) |
needEmotionWeight |
0.8 | How strongly, per point over |
stressShortWeight |
0.6 | How much short-term stress counts in stress |
stressLongWeight |
0.6 | How much long-term stress counts |
stressCarry |
0.15 | The share of new stress that also goes to the long term |
strainAt |
0.6 | While short-term stress is over this, each new stress adds strain more to the long term |
strain |
0.02 | See strainAt |
memoryImportance |
5 | The importance of a memory with none given and no kind to say |
memoryFloor |
0.5 | At midnight, memories (not core ones) weaker than this are forgotten |
coreRecalls |
3 | Recalls before an important memory may become a core memory |
coreImportance |
7 | The least importance a memory needs to become a core memory |
coreChance |
1/3 | The chance, each recall past that, that it does |
sawDecay |
null | Belief strength kept per day for what they saw themselves. null: the square root of beliefDecay (it fades half as fast) |
breakRank |
4 | The rank a break comes at: above everything else |
breakDone |
0.5 | The share of a break that must be done for it to bring catharsis |
catharsisKeep |
0.7 | The share of long-term stress kept after a break (short-term stress goes) |
againstPull |
0.8 | An action against a value they hold weighs 1 - held × againstPull. Higher: values hold people back more |
againstFloor |
0.05 | …but never less than this |
againstStress |
0.3 | Stress, per point of the values held, of starting an action against them |
Fellowship
moduleConfig: { fellowship: { ... } }. See Fellowship.
| Setting | Default | What it does |
|---|---|---|
meetGain |
0.03 | Regard gained per half hour together, before compatibility and mood |
compatSpread |
0.6 | How much compatibility varies between pairs (0..1) |
decay |
0.004 | Regard drifts back toward nothing by this much a day |
sentiments |
4 | Most sentiments kept per relationship |
imitation |
0.03 | How much a liked person’s habits rub off |
forget |
14 | Days after their last meeting that a faint acquaintance is forgotten; 0 forgets nobody |
forgetBelow |
0.05 | How faint a relationship has to be to be forgotten |
labels |
the standing table | Standing labels, rows by fame band, columns by infamy band |
friendship |
1 | knob How fast friendships and enmities form |
romance |
1 | knob How fast attraction grows from time together |
fading |
1 | knob How fast relationships fade |
friendAt |
0.5 | The friend term: regard at least this |
foeAt |
-0.4 | The foe term: regard at most this |
likeAbove |
0.2 | friends(): the people liked more than this |
compatValues |
0.3 | How much shared values add to compatibility |
meetMin |
-0.05 | The most one meeting can take away from regard |
meetMax |
0.08 | The most one meeting can add |
meetCompat |
1 | How much compatibility colors a meeting: the gain is meetGain × (1 + compat × meetCompat + (mood - 0.5) × meetMood) per half hour |
meetMood |
1 | How much mood colors a meeting. Higher: the gloomy make enemies |
attractAt |
0.3 | Time together grows attraction only between people more compatible than this |
attractGain |
0.5 | Attraction grown per point of regard gained |
imitateAt |
0.3 | Habits rub off only from people whose regard is over this |
socialRegard |
0.8 | A social action aimed at someone weighs 1 + regard × socialRegard + compat × socialCompat. Higher: people seek out those they like |
socialCompat |
0.2 | See socialRegard |
socialMin |
0.1 | …at least this |
socialMax |
2 | …at most this |
deedSentiment |
0.1 | A deed’s sentiment, when the deed moves no regard, holds this much |
witnessRegard |
0.4 | Witnesses to a deed take this share of its regard |
bands |
[0.15, 0.4, 0.7] |
Where fame and infamy pass into the next band of labels |
Wormtongue
moduleConfig: { wormtongue: { ... } }. See Wormtongue.
| Setting | Default | What it does |
|---|---|---|
reportChance |
0.6 | The chance a witness reports a crime, before temperament (a crime’s report overrides it) |
reportDelay |
[10, 90] |
Minutes before a report is made |
recognizeStranger |
0.5 | The chance of recognizing someone they don’t know |
gossipChance |
0.45 | The chance per meeting that someone passes something on, before talkativeness |
maxHops |
3 | Gossip goes at most this many tellings from whoever saw it |
heatDecay |
0.85 | Heat kept per day |
lieChance |
0.5 | The chance a dishonest teller who dislikes the subject lies |
gossip |
1 | knob How readily gossip spreads |
reporting |
1 | knob How readily crimes are reported |
heat |
1 | knob How much heat each report adds |
cooling |
1 | knob How fast heat cools |
lies |
1 | knob How readily liars shift the blame |
heatPerSeverity |
10 | Heat a report adds per point of the crime’s severity, for a crime with no heat |
heatFloor |
0.05 | Heat under this is let go at midnight |
sawStrength |
0.3 | A belief from seeing something is at least this strong, however unclear |
crimeMemory |
4 | A witness’s memory of a crime is this important… |
severityMemory |
6 | …plus this per point of severity |
plainMemory |
3 | The importance of a memory of seeing anything else |
fearWeight |
0.3 | How much fear (1 - courage) puts a witness off reporting |
loyalty |
0.8 | How much liking the actor keeps a witness quiet |
familiarReport |
0 | How much knowing the actor keeps a witness quiet: the chance they report is cut this much a point of their familiarity with the actor (Voice’s), up to familiarReportMax. 0: it doesn’t count |
familiarReportMax |
1 | The most knowing the actor can take off the chance |
crimeSeen |
0.8 | How clearly bystanders see a crime someone commits (an action’s crime) |
infamyAuthority |
0.2 | Infamy a report adds per point of severity, with the group it went to |
infamyGroups |
0.1 | …and with the witness’s own groups |
toldAuthority |
0.8 | How strongly the authority believes what a report tells it |
bribeGreed |
0.6 | A bribe’s chance: greed × bribeGreed + (amount, up to bribeFull) / bribeFull × bribeMoney - honesty × bribeHonesty + bribeBase |
bribeFull |
100 | The amount at which a bribe counts in full |
bribeMoney |
0.5 | See bribeGreed |
bribeHonesty |
0.4 | See bribeGreed |
bribeBase |
0.1 | See bribeGreed |
scareFear |
0.8 | A threat’s chance: (1 - courage) × scareFear - honesty × scareHonesty + scareBase |
scareHonesty |
0.2 | See scareFear |
scareBase |
0.1 | See scareFear |
scareRegard |
-0.3 | The regard a threat costs |
secretSpite |
-0.3 | A secret is passed on only by someone whose regard for its subject is under this |
juicyCrime |
3 | How much more worth telling a crime is than other news |
juicyDeed |
1.5 | …and any other deed |
gossipRecency |
0.99 | News keeps this much of its worth an hour |
liarBelow |
0.3 | Someone lies only with honesty under this… |
lieSpite |
-0.3 | …about someone their regard for is under this… |
scapegoat |
-0.2 | …onto someone their regard for is under this |
trustBase |
0.6 | How far a listener trusts a teller: trustBase + regard × trustRegard, from trustMin to trustMax |
trustRegard |
0.4 | See trustBase |
trustMin |
0.2 | See trustBase |
trustMax |
1 | See trustBase |
trustAlone |
0.7 | The trust without Fellowship |
toldKeep |
0.9 | The share of a belief’s strength that survives a telling, before trust |
exposedAt |
4 | A secret counts as exposed once this many know it |
repeatDays |
0 | For how many days a witness keeps count of the times they’ve seen someone do the same thing, and warned them about it (repeats); that long without seeing it again and the count lapses. 0: nobody counts, and the world hashes as without it |
repeatReport |
0 | Each time before that a witness saw it makes them this much more likely to report it: the third time, 1 + 2 × this |
Cityspeak
moduleConfig: { cityspeak: { ... } }. See Cityspeak.
| Setting | Default | What it does |
|---|---|---|
chatter |
1 | knob How chatty people in view are: the chance a meeting starts a bark exchange (at most 1) and the lines it runs to (barkLength × chatter, rounded, at least 1); 0 none |
barkGap |
2.2 | Seconds between lines in a bark exchange (cityspeak.barkGap sets it too) |
barkLength |
3 | Most lines in one exchange (cityspeak.barkLength sets it too) |
barkCooldown |
60 | Minutes before someone barks the same line again, for a line with no cooldown |
practiceBoost |
1.5 | How much more appealing role actions are, for a practice with no boost |
socialDone |
0.5 | The share of an action with a social act that must be done for it to be resolved |
roomEmpty |
0.5 | The mood of a room with nobody in it, before the practices’ tone |
Voice
moduleConfig: { voice: { ... } }. See Voice.
| Setting | Default | What it does |
|---|---|---|
offers |
3 | Subjects offered at once |
choices |
3 | Answers offered at once (besides letting it lie and goodbye) |
theirs |
0.3 | The chance, at the start and between subjects, that they raise something of their own |
patience |
8 | Beats before they’ve had enough, unless voice.patience says otherwise |
fresh |
10080 | Minutes a line said to someone is passed over for a fresher one |
strong |
2 | A landing this strong (either way) runs onWell or onBadly, and draws a reaction |
onWell |
[] |
Effects when an approach lands strongly well |
onBadly |
[] |
Effects when it lands strongly badly |
greet |
'greet' |
The greeting’s line topic |
bye |
'bye' |
Their goodbye’s line topic |
close |
'close' |
Their closing’s, when patience runs out |
react |
'react' |
The prefix of reactions’ topics |
deed |
null | A deed recorded when a talk ends |
chatter |
1 | knob How chatty they are: patience times it (rounded, at least 1), and theirs times it |
warmthRegard |
3 | The default warmth a talk starts with: regard × this, rounded… |
warmthMin |
-1 | …at least this… |
warmthMax |
3 | …at most this |
familiarTalk |
0.5 | familiarity: this much for each talk… |
familiarLearned |
1 | …and this for each thing learned about them |
familiarLand |
0 | Familiarity as trust: every approach lands this much better a point of the listener’s familiarity with the speaker (times the approach’s familiar). 0: it doesn’t count |
familiarLandMax |
1 | …at most this much better |
recallLand |
1 | An answer or subject that recalls something learned about them lands this much better |
cooldown |
4320 | Minutes a subject takes to come round fresh again, for a thread with no cooldown |
soreDays |
2 | Days a subject stays sore after sore with no number |
soreWeight |
0.1 | A sore subject is worth this share of its weight |
revealPull |
1.5 | A subject for learning something not yet learned is worth this much more |
salientFloor |
0.05 | Subjects worth less than this aren’t offered |
variety |
0.2 | Up to this much is added to each subject’s worth, the same for a pair all day |
reshuffle |
false | The variety is drawn afresh each time the subjects are offered, not once a day |
followPull |
1 | A subject sharing a topic (about) with the one just talked of is worth this much more. 1: it doesn’t count |
promiseDays |
3 | Days before a promise comes due, for one with no days |
promiseKeep |
30 | Days a settled promise is remembered (the promise: term reads it) |
Bree
moduleConfig: { bree: { ... } }. See Bree. The parts of how an exchange lands are each a weight on a score from the listener’s side; the outcome tables (regard, attraction, grudge, mends, feel, memory) are keyed by outcome (warm, good, fine, awkward, sour, row).
| Setting | Default | What it does |
|---|---|---|
warmth |
1 | knob How much good exchanges warm people: the regard and attraction a good one gives, times it |
quarrels |
1 | knob How readily people quarrel: the regard a bad exchange takes away, and the appeal of hostile kinds on meeting, times it |
escalation |
1 | knob How readily a sour turn becomes an argument and an argument a fight |
grudges |
1 | knob How much a bad exchange leaves a grudge |
forgiveness |
1 | knob How fast grudges fade, and how much an apology or making up takes off them |
talk |
1 | knob How often people strike up exchanges when they meet, and how many turns they talk for |
strike |
0.3 | The chance a meeting starts an exchange, before talk. Higher: a chattier town |
again |
0 | Two still together after an exchange between them is done may strike up another this many minutes later (by the same chance), and every as many after while they stay together: people sitting side by side talk on and off. 0: only when they meet |
quiet |
['sleep'] |
Action tags during which nobody strikes up an exchange, joins one or keeps one going |
needPull |
2 | A kind that relieves a pressing need is more appealing: weight × (1 + relief × urgency × needPull) |
traits |
each role’s trait.<role> |
The term each trait role is read from (temper, warmth, humor, patience, courage, forgiveness, talkative): map them to the game’s own traits |
scale |
[2, 0.75, -0.75, -1.75, -3] |
The least score for warm, good, fine, awkward and sour; under the last, a row. Lower them all: things go better |
spread |
1.5 | The luck of a turn: up to this much either way. Higher: more surprises |
regardWeight |
2 | How much the listener’s regard for the speaker counts |
compatWeight |
1 | How much compatibility counts |
moodWeight |
1 | How much the listener’s mood counts, a point from the middle |
stressWeight |
1 | How much the listener’s stress takes away |
needWeight |
2 | How welcome a kind that meets a pressing need is |
attractWeight |
3 | How much attraction counts for romantic kinds |
grudgeWeight |
3 | How much a grudge or a feud against the speaker takes away |
rowWeight |
2 | How much a row between them lately takes away… |
rowMinutes |
1440 | …fading over this many minutes |
roomWeight |
0.5 | How much the mood of the room counts (Cityspeak) |
topicWeight |
1 | How much the topic being to the listener’s taste counts |
mannerWeight |
1 | How much the speaker’s manner counts |
sway |
0.4 | How far each turn moves an exchange’s running score toward its own. Higher: one bad turn spoils more |
regard |
warm 0.04, good 0.02, fine 0.005, awkward -0.01, sour -0.03, row -0.08 | Regard each of them gains or loses for the other, by outcome (a kind’s regard multiplies it) |
attraction |
warm 0.05, good 0.025, fine 0, awkward -0.01, sour -0.03, row -0.06 | Attraction moved by romantic kinds, by outcome |
grudge |
sour 0.1, row 0.25, else 0 | Grudges left, by outcome (a kind’s grudge multiplies it) |
mends |
warm 1.5, good 1, fine 0.5, else 0 | The share of a kind’s mends an outcome brings |
feel |
warm good_talk, sour and row had_words, long long_chat, left snubbed |
Feelings by outcome when a kind says none of its own |
memory |
row 5 | Memories by outcome (and long): how important; none under 1 |
groupShare |
0.5 | In a group, each pair takes this share of the regard |
longTurns |
6 | An exchange this many turns long, fine or better, counts as long |
leftRegard |
-0.03 | Regard the one who walks off loses for the one they walk away from |
teachOver |
0.2 | A lesson teaches only a skill the teacher is at least this much better at |
turns |
partner 8, kin 6, close 8, friend 5, acquaintance 3, stranger 2, rival 4, sour 2 | Turns a conversation runs to, by how the starter stands with the other |
bonds |
[0.6, 0.3, 0.05, -0.15] |
The regard for close, friend, acquaintance and stranger; under the last, sour |
rivalAt |
0.3 | Grudges (or a feud) this strong both ways make them rivals |
talkativeTurns |
2 | Turns added a point of talkativeness above the middle, both together |
lowMood |
0.35 | Either in a mood under this… |
lowMoodTurns |
2 | …and they talk this many turns fewer |
turnsJitter |
1 | Up to this many turns more or fewer, drawn |
minTurns |
2 | Turns at least… |
maxTurns |
12 | …and at most, before talk |
quickTurns |
2 | Turns of a kind with no topics that doesn’t say its own |
groupTurns |
3 | Turns added for each member past two |
turnGap |
[2, 4] |
Minutes between turns, drawn |
topicPull |
0.5 | A topic to the speaker’s taste is more likely raised: weight × (1 + fit × topicPull) |
topicCooldown |
1440 | Minutes a topic takes to come round fresh again between the same two |
topicMemory |
8 | Topics remembered per pair |
tellAt |
'fine' |
News passes on when its telling lands at least this well |
trust |
0.7 | Without Wormtongue, the share of a belief’s strength a telling keeps |
shareWindow |
60 | Two memories of the same kind this many minutes apart count as shared |
recentMinutes |
1440 | What’s happened to someone lately (events topics): their memories of the last this many minutes |
likeAbove |
1.1 | A taste (an instinct or a habit) above this counts as something they love doing |
shareFit |
0.5 | A topic they share (the same doing, a memory both hold) is this much more to the listener’s taste |
mannerJitter |
0.1 | Up to this much added to each manner’s fit, the same for each person always |
groupMax |
5 | Most people in one exchange |
joinChance |
0.5 | The chance someone at the same place joins a group exchange, times their talk |
joinRegard |
0 | Only people whose regard for one of those talking is at least this join |
escalateAt |
'sour' |
A turn this bad or worse can escalate, send someone off, and be seen |
escalateBase |
0.25 | The chance the one hurt answers back harder: this… |
escalateTemper |
0.5 | …plus this a point of temper above the middle… |
escalateStress |
0.5 | …plus this a point of stress… |
escalateGrudge |
0.6 | …plus this a point of grudge against the speaker… |
escalateRegard |
0.5 | …less this a point of regard for them; times escalation, and the kind’s own escalation |
calmBase |
0.1 | The chance the other keeps their patience and calms it: this… |
calmPatience |
0.6 | …plus this times their patience… |
calmRegard |
0.3 | …plus this times their regard for the one hurt |
stepInBase |
0.05 | The chance someone there steps in: this… |
stepInRegard |
0.5 | …plus this times their regard for whichever they like more… |
stepInCourage |
0.3 | …plus this a point of courage above the middle… |
stepInFrom |
0.2 | …if they like one of them at least this much |
mediateRegard |
0.03 | Someone who steps in gains this much regard from both… |
mediateMends |
0.1 | …and takes this much off their grudges against each other |
leaveBase |
0.3 | The chance the one hurt walks off instead: this… |
leaveTemper |
0.35 | …plus this times their temper… |
leaveRegard |
0.3 | …less this times their regard for the speaker… |
leaveSour |
0.2 | …plus this for each sour turn so far |
grudgeTemper |
0.5 | A quick temper holds more of a grudge: × (1 + (temper - 0.5) × 2 × this) |
grudgeForgive |
0.5 | A forgiving nature holds less: × (1 - (forgiveness - 0.5) × 2 × this) |
fade |
0.04 | Grudge strength lost a day, at a middling nature… |
forgiveBase |
0.5 | …times this… |
forgiveTrait |
1 | …plus this times their forgiveness (and an apology’s mending times the same) |
grudgeFloor |
0.02 | Grudges and feuds weaker than this are let go at midnight |
feudAt |
0.5 | Two people who hold grudges this strong against each other are in a feud |
feudFade |
0.01 | Feud strength lost a day, times the world’s forgiveness |
feudSpread |
0 | A fight between people of two households sets the households feuding by this much; 0 never |
feudMends |
0.5 | A making-up between members of feuding groups takes this share of what it mends off the feud |
avoidFrom |
0.05 | Animosity weaker than this keeps nobody away |
avoidPlace |
0.6 | An option at a place where someone they’ve a grudge against is weighs 1 - animosity × this… |
avoidTarget |
0.8 | …a social one aimed at them 1 - animosity × this… |
avoidFloor |
0.1 | …never under this |
hostilePull |
1 | A hostile interaction aimed at them weighs 1 + animosity × this instead |
reconcileLabel |
'made it up' |
The sentiment a grudge made up leaves… |
reconcileSentiment |
0.05 | …and how much it adds to regard, for good |
reconcileFeeling |
'made_up' |
The feeling of making up |
reconcileMemory |
5 | The importance of the memory it leaves |
seenAt |
'sour' |
People about see an exchange that goes this badly or worse, and every escalation |
witnessStrength |
0.8 | How strongly a witness believes what they saw |
witnessMemory |
3 | The importance of a witness’s memory |
witnessRegard |
0.5 | A witness’s regard for whoever started it moves by this share of what the outcome moves |
witnessFeeling |
'saw_row' |
The feeling a witness gets |
recent |
50 | Finished exchanges kept, for history and witnesses reported late |
pairDays |
30 | Days after two people’s last exchange that what’s kept of their exchanges (the last row, their topics) is let go; 0 never |
Mentat
moduleConfig: { mentat: { ... } }. See Mentat.
| Setting | Default | What it does |
|---|---|---|
maxTries |
3 | Replans before giving up |
depth |
3 | How deep get: looks |
priceWeight |
1 | Minutes of effort one unit of money is worth, before thrift |
persistence |
1 | knob How long people keep at a plan: maxTries times it; 0 gives up at the first failure |
scruples |
1 | knob What scruples cost: the risk of illegal ways and the cost of ways against their values, times it |
giveUp |
120 | Minutes, at least, before a task given up on is chosen again |
setAside |
2 | Plans kept set aside at once |
stale |
1440 | Minutes after it began that a set-aside plan is dropped rather than picked up again |
honestNever |
0.8 | Illegal ways are never taken by someone this honest |
riskBase |
60 | An illegal way costs riskBase + honesty × riskHonesty + heat × riskHeat minutes of effort more |
riskHonesty |
300 | See riskBase |
riskHeat |
20 | See riskBase |
valuesNever |
0.9 | Ways against a value are never taken by someone who holds it this much |
valuesCost |
200 | …otherwise they cost held × valuesCost minutes more |
Gaff
moduleConfig: { gaff: { ... } }. See Gaff.
| Setting | Default | What it does |
|---|---|---|
peakAt |
0.7 | Intensity at which the build-up turns into a peak |
peakMinutes |
240 | Minutes a peak lasts |
relaxMinutes |
720 | Minutes of relaxing after the fade |
decay |
0.04 | Intensity lost per hour |
events |
1 | knob How often storylets fire on their own; 0 never (trigger still fires them) |
intensity |
1 | knob How much a firing raises its subject’s intensity |
bump |
0.2 | How much a firing raises intensity, for a storylet with no bump |
relaxAt |
0.4 | A fade turns to relaxing under this share of peakAt |
Ceres
moduleConfig: { ceres: { ... } }. See Ceres.
| Setting | Default | What it does |
|---|---|---|
prices |
1 | knob How much prices put people off; 0: price is no object (they still can’t buy what they can’t afford) |
priceShare |
0.4 | A priced option weighs 1 - share × (priceShare + thrift × priceThrift), share being the price over what they have |
priceThrift |
0.8 | See priceShare. Higher: the thrifty mind prices more |
priceFloor |
0.05 | …never less than this |
Cradle
moduleConfig: { cradle: { ... } }. See Cradle.
| Setting | Default | What it does |
|---|---|---|
year |
525600 | Minutes in a year (365 days) |
stages |
baby 0, child 3, teen 13, adult 18, elder 65 | Stages and the age (in years) each starts at |
lifespan |
[72, 96] |
People die of old age between these ages |
fertility |
0.25 | The chance per year a couple of the right age has a child |
fertile |
[20, 42] |
The ages at which people have children |
autoPair |
{ regard: 0.6, attraction: 0.5 } |
Couples form on their own when regard and attraction both ways reach these; null leaves it to the game |
courtship |
1 | knob How readily couples form on their own (the thresholds divided by it, each for their own side); 0 never |
births |
1 | knob How often couples have children; 0 never |
deaths |
1 | knob How likely people are to die of old age; 0 never |
ageUnknown |
30 | The age of someone with no born |
pairStages |
['adult', 'elder'] |
The stages that couple up on their own |
partnerSentiment |
0.3 | The sentiment a couple holds for each other (my partner) |
childSentiment |
0.5 | …and parents for a newborn (my child) |
traitSpread |
0.12 | A child’s trait is their parents’ average, give or take up to this (without Delos) |
griefAt |
0.35 | Those whose regard for someone who leaves is at least this grieve |
pastLifespan |
0.2 | The chance a day, on top, of dying once past the end of the lifespan |
Athelas
moduleConfig: { athelas: { ... } }. See Athelas.
| Setting | Default | What it does |
|---|---|---|
contagion |
1 | knob How catching courses are: every course’s chance per hour together, times it; 0 nothing spreads |
duration |
1 | knob How long courses last: every phase’s minutes, times it, as the phase starts |
sevAt |
0.5 | The severity a course’s numbers are written for: afflicted at it (or with none), its phases run as written. A course’s own severity.at overrides it |
sevStretch |
2 | How much severity stretches the phases: each lasts sevStretch ^ ((severity - sevAt) × 2) times as long, as it starts (2: twice as long at 1, half at 0); 1 leaves them be |
sevDepth |
1 | How much severity deepens what a phase does: its rates and weigh factors are raised to the power 1 + sevDepth × (severity - sevAt) / sevAt (twice as deep at 1, nothing at 0); 0 leaves them be |
tendBase |
0.5 | How good a tending is, 0..1, with no skill: the mark tended:<course> reads |
tendSkill |
null | The skill that makes tending better: the rest of the way to 1 by the tender’s share of it (null: none) |
tendHasten |
0.25 | A tending brings the end of the phase they’re in sooner by this share of what’s left, times how good it was; 0 none |
Delos
moduleConfig: { delos: { ... } }. See Delos.
| Setting | Default | What it does |
|---|---|---|
jump |
{ chance: 0.12, by: 0.35 } |
A child’s chance that one trait jumps by by, up or down |
gift |
{ chance: 0.1, by: 0.4 } |
A child’s chance of a natural gift: one talent raised by by |
mutation |
1 | knob How often genomes mutate: trait jumps, gifts and every gene’s mutate, times it |
variation |
1 | knob How far children stray: every blended value’s noise, times it |
traitBlend |
founders [0.1, 0.9], bounds [0, 1], cross 0.65, noise 0.1 |
The defaults for a trait that doesn’t say its own; give any of them, the rest stay |
talentBlend |
founders [0.6, 1.4], bounds [0.2, 2], cross 0.7, noise 0.08 |
The same for talents |
instinctBlend |
founders [0.8, 1.25], bounds [0.5, 1.5], cross 0, noise 0.1 |
The same for instincts |
lookBlend |
founders [0, 1], bounds [0, 1], cross 0.65, noise 0.1 |
The same for looks |
Morgul
moduleConfig: { morgul: { ... } }. See Morgul. The knobs and settings are read only once the game declares a means, a wound or a trap.
| Setting | Default | What it does |
|---|---|---|
violence |
1 | knob How readily anyone chooses an action or task tagged harmTag: its weight, times it; 0 never |
lethality |
0 | knob How often harm at its worst kills: hurt at killAt kills with deathChance times it; a wound’s phase that ends in death kills with it. 0: nobody dies of harm |
vengeance |
1 | knob How strongly what someone holds against whoever hurt them becomes a wish for revenge |
caution |
1 | knob How much people steer clear of danger they know of (cautionPlace) |
healing |
1 | knob How fast wounds heal: a wound’s phases last 1 / healing as long (under 0.01 taken as 0.01) |
suspicion |
1 | knob How readily people suspect someone of harm they didn’t see done (suspect), and how strongly (suspectStrength) |
downAt |
0.8 | Hurt at which someone goes down |
downMinutes |
[20, 60] |
Minutes they lie there before they come round, unless helped up |
downRank |
5 | The rank lying down comes at: above everything (a break is 4) |
down |
'down' |
The action lying down is (declared by Morgul once a wound is, unless the game has one by this id) |
fighting |
'fighting' |
The action fighting is: both fighters are held in it while a fight by numbers lasts (declared the same way) |
fightRank |
4.5 | The rank fighting comes at: above directives and breaks, under lying down |
killAt |
1 | Hurt at which harm is at its worst, and may kill |
deathChance |
0.5 | The chance harm at its worst kills, times lethality |
direct |
['blow', 'throw', 'shoot', 'cast'] |
The ways of harm whose victim (and onlookers) see who did it; any other way (a trap, a dose, a fall) leaves suspicion |
intents |
meant 1, careless 0.4, accident 0.1, defense 0 | The share of the grudge, regard lost, fear and onlookers’ blame each intent brings. 0 for defense: no grudge for a blow they started themselves |
grudge |
1.5 | A victim’s grudge (Bree): severity × this × the intent’s share, times Bree’s grudges knob |
regard |
0.6 | A victim’s regard lost for whoever did it: severity × this × the share |
fear |
1 | Fear of whoever did it: severity × this × the share × 1 + (0.5 - courage) × 2 × fearCourage |
fearCourage |
0.5 | See fear: how much more the timid fear |
wary |
1 | Fear of the place it happened: severity × this |
fade |
0.05 | Fear (× 0.5 + courage), fear of places, and what they hold against someone from harm (× 0.5 + forgiveness), lost a day |
angerAt |
0.5 | A victim with temper × 0.6 + courage × 0.4 at least this is furious, else scared |
shakenAt |
0.15 | A harm at least this bad leaves them shaken |
memory |
3 | The importance of the victim’s memory: this… |
memorySeverity |
6 | …plus this a point of severity (onlookers’, half) |
feud |
0 | Meant harm between people of two households sets the households feuding (Bree) by severity × this; 0 never |
sated |
2 | Harm done to someone they held harm against eases it by severity × this: revenge sated |
witnessStrength |
0.8 | How strongly an onlooker believes what they saw (did:<who>:harm) |
witnessMemory |
2 | The importance of an onlooker’s memory, plus severity × memorySeverity / 2 |
witnessRegard |
0.3 | An onlooker’s regard lost for whoever did it: severity × this × the share (and a suspect’s, by the suspicion’s strength) |
crimes |
none | The Wormtongue crime each intent is, and a killing: { meant: 'assault', careless: 'negligence', killed: 'murder' }. Declared crimes only; defense never |
catch |
0.3 | A trap’s chance to catch someone who does something at its place off screen, for a trap with no catch |
careful |
0.5 | The careful are caught less: × 1 - (careful - 0.5) × 2 × this |
seenCatch |
0.3 | A trap that isn’t hidden catches at this share of its chance (and whoever it doesn’t catch sees it) |
warnAt |
0.2 | Someone who knows of a trap or a taint set for someone warns them when they meet, if their regard for them is at least this |
eats |
['food'] |
The action tags that eat from a place’s pot (a taint with no item) |
dose |
0.5 | A dose’s severity, for a taint with none whose means says none |
suspect |
0.8 | The chance someone who learns of a harm they didn’t see done suspects someone, times suspicion |
suspectTold |
2 | The evidence: being told who set or dosed it, by the belief’s strength (whoever saw it done, knows)… |
suspectServed |
0.6 | …having served it (the place’s owner, staff on shift there)… |
suspectGrudge |
1.5 | …a grudge against the victim (Bree’s animosity), by its strength… |
suspectAbout |
0.3 | …being about when it was done or struck |
suspectSpite |
1 | A suspicion weighs 1 + dislike × this (a scapegoat)… |
suspectLoyal |
0.6 | …and 1 - liking × this, never under 0.1 |
suspectStrength |
0.5 | A suspicion’s strength: its weight × this × suspicion… |
suspectMax |
0.9 | …at most this… |
suspectFloor |
0.1 | …and not held under this |
fights |
['fight'] |
The Bree kinds that are fights by numbers: ids or 'tag:<tag>' |
blows |
12 | Most blows in a fight |
might |
none | A fighter’s might: considerations on them (strength, size, skill, nerve), multiplied |
fist |
0.1 | A bare blow’s severity (and the harm: effect’s, with none given) |
fistKind |
'blunt' |
A bare blow’s kind |
meansBlow |
0.5 | A held means adds its severity times this to a blow |
meansMight |
1 | …and to might: × 1 + severity × this |
hurtMight |
0.6 | Might lost a point of hurt: × 1 - hurt × this |
blowSpread |
0.5 | A blow’s severity, give or take this share |
yieldAt |
0.5 | A fighter yields at this much hurt, at middling nerve… |
yieldCourage |
1 | …× 1 + (courage - 0.5) × this |
walkOff |
0.4 | After a blow that doesn’t end it, the one struck walks off with this chance times their hurt over the hurt they’d yield at |
playerMight |
'might:player' |
The fact the player’s might is read from (1 when it isn’t set) |
respond |
fight 1, flee 1, yield 1, help 1 | How appealing each answer to the player’s harm is, over its shape (nerve, temper, odds, hurt, friends about) |
helpFrom |
0.2 | Someone there whose regard for them is at least this can be called on for help |
fightGap |
30 | Minutes without harm between a character and the player after which the next starts a fight afresh (start) |
fleeMinutes |
30 | Minutes someone who chose to flee, or was frightened off, keeps wanting to get away (and before fear sends them off again) |
harmTag |
'harm' |
The tag of harmful actions and tasks (violence, revenge) |
fleeTag |
'flee' |
The tag of fleeing (fleePull) |
careTag |
'care' |
The tag of tending the hurt (carePull) |
avenge |
'avenge' |
The task revenge is: offered, aimed at whoever they want it on, past vengeAt |
vengeAt |
0.3 | What they hold against someone, times vengeance and their temper, at which revenge is an option |
vengeTemper |
0.5 | A quick temper wants it more: × 1 + (temper - 0.5) × 2 × this |
vengePull |
0.5 | Revenge weighs this times how much they want it; a harmful action aimed at whoever they want it on, 1 + that |
fleeAt |
0.25 | Fear of someone there, times poor odds against them, at which someone wants to leave |
fleePlace |
0.8 | Options where someone they fear is weigh 1 - fear × (1 - odds) × this |
fleePull |
2 | Fleeing weighs 1 + fear × this |
cautionPlace |
0.7 | Options at a place they know is dangerous weigh 1 - danger × this × caution |
carePull |
2 | Tending someone hurt weighs 1 + hurt × this × (0.5 + regard) |
cared |
0.03 | Regard the one tended gains for whoever tends them |
floor |
0.1 | None of these weighs an option under this |
recent |
50 | Harms kept, for history and suspicion (and every one not noticed yet) |
traits |
none | The terms trait roles are read from (temper, courage, careful, forgiveness): over Bree’s mapping, else trait.<role> |
Joi
moduleConfig: { joi: { ... } }. See Joi. Joi never changes the world, so these shape only the prompt and the wait.
| Setting | Default | What it does |
|---|---|---|
wants |
0.6 | Needs over this go into the prompt as what they badly want |
memories |
3 | How many of their strongest memories go into the prompt |
timeoutMs |
2500 | Milliseconds to wait for the provider before the written line, unless speak is given its own |
What isn’t a setting
What’s left in the code changes nothing a person does, or is the shape of a rule rather than a number to turn: rounding, small tolerances, units (a meeting’s regard is counted per half hour, contagion per hour), lists kept for reading (reports, the ledger, a file’s notes, social acts, storylets fired), guards against loops, how specific a line’s conditions make it, and the neutral points of formulas (a mood of 0.5 adds nothing to a meeting; a trait of 0.5 is middling). The built-in feelings (catharsis, grief, scared…) and Ceres’s behind_on_rent are definitions: declare your own with the same id to change them.