Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: !!SCIENCE!! Availability of Social Skills, demystified (*) [copied from reddit]  (Read 188 times)

voliol

  • Bay Watcher
    • View Profile

Quote from: o11c
(someone should copy this onto the official forums; I'm allergic to sites that don't use HTTPS in $CURRENTYEAR)
Everything below is by o11c on reddit. Here’s the link to the original reddit post: https://www.reddit.com/r/dwarffortress/comments/jf36zg/science_availability_of_social_skills_demystified/

So I got tired of being surprised when my chosen leader-broker got locked out of a social skill, and I decided to do something about it.
So here is the result of some Science, believed to be complete (with one exception).
As far as I know, every other source out there is wrong/incomplete on at least one point, except the trivial ones.
There was, however, one source that was accurate enough to be useful: Rhavviepoodle on the wiki talk page. A huge thanks to him/her for giving me a huge start and being explicit about things not tested.
Another huge thanks to the makers of DFHack, and in particular its modtools/set-belief and modtools/set-personality commands. Without that, this would've been unbearably painful.
No thanks at all to whoever decided that Dwarf Therapist should scramble the tabs every disconnect, or forget the sort order constantly. May all your candy be hollow.

As a quick reminder, "beliefs" are strongly based on the civilzation, and only change rarely for individual dwarves. Personality "facets" are strongly dwarf-specific, though central values remain more common.
For more on both, including the in-game text descriptors if you aren't using Dwarf Therapist, see the wiki
(note that Dwarf Therapist seems to show relative beliefs during embark, but absolute once the game has started)
For convenience, tiers are defined as:
TierBeliefFacet
1-50..-410..9
2-40..-2610..24
3-25..-1125..39
4-10..1040..60
511..2561..75
626..4076..90
741..5091..100
(Note that this means the "raw" value, not the inverted value that Dwarf Therapist uses for some facets)

In order of skill, simplest first:
Judge of Intent and Negotiator are raised regardless of beliefs or facets.
Liar is gained if:
  • beliefs:
    • TRUTH ≤ tier 4
  • no facets
With these 3 exceptions, all other social skills are affected both by beliefs and facets.
Flatterer requirements:
  • beliefs:
    • TRUTH ≤ tier 5
  • facets:
    • FRIENDLINESS ≥ tier 4
    • FRIENDLINESS ≥ tier 6 to ignore beliefs
Thus, most dwarves who can gain Liar can also gain Flatterer, unless they are unfriendly.
Flatterer and Liar are believed to be the only cases where a tier difference other than very low (tier 1-2), medium-ish (tier 3-5), very high (tier 6-7) is used (but I didn't test every combination for the complex cases below; I only tested tiers 1, 4, and 7)
Persuader requirements:
  • beliefs:
    • ELOQUENCE ≥ tier 3
    • facets:
      • ASSERTIVENESS ≥ tier 3
      • ASSERTIVENESS ≥ tier 6 to ignore beliefs

    Comedian requirements:
    • beliefs:
      • MERRIMENT ≥ tier 3
    • facets:
      • HUMOR ≥ tier 3
      • HUMOR ≥ tier 6 to ignore beliefs

    Pacifier requirements:
    • beliefs:
      • PEACE ≥ tier 3
    • facets:
      • DISCORD ≤ tier 5
      • DISCORD ≤ tier 2 to ignore beliefs

    Consoler requirements:
    • beliefs:
      • STOICISM ≤ tier 5
    • facets:
      • SWAYED_BY_EMOTIONS ≥ tier 3
      • CRUELTY ≤ tier 5
      • DISCORD ≤ tier 5
      • SWAYED_BY_EMOTIONS ≥ tier 6 || CRUELTY ≤ tier 2 || DISCORD ≤ tier 2 to ignore beliefs (but not other facets)

    Intimidator requirements:
    • beliefs:
      • POWER ≥ tier 3
      • TRANQUILITY ≤ tier 5
      • HARMONY ≤ tier 5
    • facets:
      • ASSERTIVENESS ≥ tier 3
      • DISCORD ≥ tier 3
      • ASSERTIVENESS ≥ tier 6 || DISCORD ≥ tier 3 to ignore beliefs (but not other facets)

    Conversationalist requirements:
    • beliefs:
      • LEISURE_TIME ≥ tier 3 (probably)
      • FRIENDSHIP ≥ tier 3 (maybe)
      • at least more than one other belief ≥ 3 (for full speed, see below) ?
    • facets:
      • GREGARIOUSNESS ≥ tier 3
      • BASHFUL ≤ tier 5
      • GREGARIOUSNESS ≥ tier 6 || BASHFUL ≤ tier 2 to ignore beliefs (but not other facets)
    Now, here is where my science fails. Conversationalist is "special".
    Normally, it's easy to test changes to beliefs/facets, since dwarves will gain 1-2 XP per game-day of chatting, in all skills equally (though different dwarves gain it quite differently, details unknown. Possibly we lose due to pairing off and leaving an odd dwarf out, or where they're standing relative to each other? It doesn't seem to be attribute-based.)
    For most dwarves, Conversationalist follows the same pattern. But for some, if they have some very low beliefs, it increases but only slowly - about half the rate of other skills, and there seems to be a lag of about 30 XP before they gain it at all. This makes it very annoying to test.
    Either that or it somehow depends on other dwarves ... but I doubt it.
    The information on Conversationalist-related facets should be accurate at least, and belief changes are at least somewhat rare ...
    If anyone wants to research further, I'm fairly certain that the skill gains at the full rate if all of the following are at least tier 3:
    • ARTWORK
    • COMMERCE
    • COMPETITION
    • COOPERATION
    • CRAFTSMANSHIP
    • CUNNING
    • DECORUM
    • ELOQUENCE
    • FAIRNESS
    • FAMILY
    • FRIENDSHIP
    • HARD_WORK
    • HARMONY
    • INDEPENDENCE
    • INTROSPECTION
    • KNOWLEDGE


    Summary of beliefs:
    All belief requirements can be ignored if the facet is extreme enough, except Liar since it has no facets.
    • ELOQUENCE ≥ tier 3 needed for Persuader
    • FRIENDSHIP ≥ tier 3 maybe needed for Conversationalist (see above)
    • HARMONY ≤ tier 5 needed for Intimidator
    • LEISURE_TIME ≥ tier 3 probably needed for Conversationalist (see above)
    • MERRIMENT ≥ tier 3 needed for Comedian
    • PEACE ≥ tier 3 needed for Pacifier
    • POWER ≥ tier 3 needed for Intimidator
    • STOICISM ≤ tier 5 needed for Consoler
    • TRANQUILITY ≤ tier 5 needed for Intimidator
    • TRUTH ≤ tier 4 needed for Liar (not ignorable)
    • TRUTH ≤ tier 5 needed for Flatterer
    • unknown other belief(s) needed for full-experience Conversationalist (see above)

    Summary of facets:
    If any single facet is extreme enough, you can ignore the belief requirements. Note that you still need to meet all other facet requirements.
    • ASSERTIVENESS ≥ tier 3 needed for Intimidator; ≥ tier 6 to ignore beliefs
    • ASSERTIVENESS ≥ tier 3 needed for Persuader; ≥ tier 6 to ignore beliefs
    • BASHFUL ≤ tier 5 needed for Conversationalist; ≤ tier 2 to ignore beliefs
    • CRUELTY ≤ tier 5 needed for Consoler; ≤ tier 2 to ignore beliefs
    • DISCORD ≤ tier 5 needed for Consoler; ≤ tier 2 to ignore beliefs (but that blocks Intimidator)
    • DISCORD ≤ tier 5 needed for Pacifier; ≤ tier 2 to ignore beliefs (but that blocks Intimidator)
    • DISCORD ≥ tier 3 needed for Intimidator; ≥ tier 6 to ignore beliefs (but that blocks Pacifier and Consoler)
    • FRIENDLINESS ≥ tier 4 needed for Flatterer; ≥ tier 6 to ignore beliefs
    • GREGARIOUSNESS ≥ tier 3 needed for Conversationalist; ≥ tier 6 to ignore beliefs
    • HUMOR ≥ tier 3 needed for Comedian; ≥ tier 6 to ignore beliefs
    • SWAYED_BY_EMOTIONS ≥ tier 3 needed for Consoler; ≥ tier 6 to ignore beliefs
    [/list][/list]

    voliol

    • Bay Watcher
      • View Profile

    From the reddit thread; answer by o11c.

    Quote from: Agentlien
    Thank you for taking the time to do this! It's the kind of science I wish we had more of. Never have I said that about social sciences before.

    The one thing missing for completion is a thorough description of the experiment procedure itself.

    Oh right, that part:
    Phase 0: there has got to be a better way than this
    • embark with only peasants (or at least without any labors that start automatically)
    • idle for a while, wait for skill XP to change
    • look at DFHack's skill grid (u l) to see where the holes are, and what the current XP is
    • look at the Beliefs and Traits in Dwarf Therapist (you'll have to create a new custom tab for Belief, it's obvious if you enable the "Grid Views" pane)
    • look for outliers, document them
    • abandon
    • repeat
    • verify most of the info from that one talk page
    • eventually realize that something weird is happening

    Phase 1: overall shapes
    • embark with only peasants so they don't sort
    • set each dwarf to a different tier of all facets (select in the u menu; modtools/set-personality -all -tier <tiernumber>)
    • SAVE (important)
    • for each tier 1..7:
      • set all dwarfs to that tier of all beliefs (modtools/set-belief -all -tier <tiernumber> -citizens)
      • idle
      • this tells us whether the particular skill has ≥ 3, ≤ 5, whatever, requirements for some unspecified belief(s) and/or facet(s)
      • die and restart DF

    Phase 2: determining exact beliefs and facets

    The following Python code may be inspirational:
    Code: [Select]
    def subset(l, i, format_string):           
        for j, e in enumerate(l):                           
            if j & (1 << i):   
                print(format_string.format(e))
    • set all dwarfs to tier 4 of both kinds
    • SAVE
    • set the ith dwarf to tier 1 (or tier 7) for each belief (or facet) has a 1-bit in position i (i.e., copy-paste the output of that function into the DFhack console)
    • in Dwarf Therapist, look at which combination of rows matches each skill of the appropriate shape
    • when a suspected belief/facet is found, toggle it to verify (it can be wrong when multiple are involved)
    • if verification fails, look at what combination of partial matches could satisfy it, and see if any of the names looks relevant
    • use the inevitable spare dwarf (there aren't 128 facets) to verify obvious things and also verify that any extreme facet overrides the need for all belief
    • die and restart
    • finally whack all the moles for Intimidator
    • realize that Conversationalist is starting to gain even for dwarves I didn't just frob. That really, really shouldn't happen.
    • give up
    • realize that Conversationalist is not a constant offset from the other skills; the difference is increasing.