Title: {Mapping Attributes to NPC Personalities} Class: {blog} Date: {Fri Jun 14 18:03:22 EDT 2019} Content-Type: {html} Format: {subst} date: {Fri Jun 14 18:03:22 EDT 2019} owner: 619eb03b-0f7d-490f-a2ac-9eb72e4c789d Body: {

As I was working on my concept for [etoyoc::wiki bcd92e52-39e7-43d3-9f49-5dc8bc9050b1] I had a revelation. Not only could this system be used for playing character abilties, I could use it to define Non-Playing Character (NPC) personalities. I had been using the Myers/Briggs personality metric. But I keep running into soft spots in the logic. And those spots are caused by the intrinsic assumption that each attribute has an opposite, and that opposites are mutually exclusive.

My thinking is to adapt my Mind/Soul/Will system and then treat MTBI personality quirk as as expressions of these 3 attributes. (Their occupation is largely selected by personality index as it is.)

So, I got to calculating and in an afternoon I developed this conversion table between Myers/Briggs Temperament Indexes and MSW attributes.

[set o {} set MTBT_MATRIX { T {mind +2 soul +0 will +0} F {mind +0 soul +2 will +0} P {mind +1 soul +0 will +2} J {mind +0 soul +2 will +1} N {mind +1 soul +0 will +0} S {mind +0 soul +1 will +0} E {mind +0 soul +0 will +3} I {mind +2 soul +1 will +0} } foreach {mtbi con mtbio cono} $MTBT_MATRIX { append o "" } return $o]
MTBI AttributeScoreMTBI AttributeScore
$mtbi$con$mtbio$cono

We start each score at zero, and add in our factors for each MTBI letter code. When we combine these scores we get the following table:

[set o {} set sum {mind 0 soul 0 will 0} foreach {mtbi pop domain description} { ENTJ {1.8%} {} {Commander} INTJ {2.1%} {} {Architect} ESTJ {8.7%} {} {Executive} ISTJ {11.6%} {} {Logistician} ENFJ {2.5%} {} {Protagonist} INFJ {1.5%} {} {Advocate} ESFJ {12.3%} {} {Consul} ISFJ {13.8%} {} {Defender} ENTP {3.2%} {} {Debater} INTP {3.3%} {} {Logician} ESTP {4.3%} {} {Entrepreneur} ISTP {5.4%} {} {Virtuoso} ENFP {8.1%} {} {Campaigner} INFP {4.4%} {} {Mediator} ESFP {12.5%} {} {Entertainer} ISFP {8.8%} {} {Adventurer} } { set combo {mind 0 soul 0 will 0 total 0} foreach letter [split $mtbi {}] { foreach {item amount} [dict get $MTBT_MATRIX $letter] { dict incr combo $item $amount dict incr sum $item $amount dict incr combo total $amount } } append o "" #append o "" set rarity 1.0 foreach attrib {mind soul} { set v [dict get $combo $attrib] if {$v > 5} { set rarity [expr $rarity * 0.1] } elseif {$v > 4} { set rarity [expr $rarity * 0.25] } elseif {$v > 3} { set rarity [expr $rarity * 0.5] } elseif {$v > 2} { set rarity [expr $rarity * 0.75] } elseif {$v < 0} { set rarity [expr $rarity * 2] } append o "" } if {[dict get $combo will]>7} { set rarity [expr {$rarity*3}] } elseif {[dict get $combo will] > 4} { set rarity [expr {$rarity*2}] } append o "" append o "" #append o "" append o "" } append o "" return $o]
MTBIMindSoulWillDescription
$mtbi$pop$v[dict get $combo will][dict get $combo total][format %.2f $rarity]$description
[dict get $sum mind][dict get $sum soul][dict get $sum will]

Each of the MTBI personality indexes adds up to exactly 9 points in the Mind/Soul/Will index. Each of the Mind/Soul/Will points is equally represented in the distribution if you look at the totals. There is one dirty fudge in J vs P where I hand out a will point as a participation trophy, but all in all I'm happy with the answers. I tried spot checking them against the predictions made by the MTBI, but the problem is the MTBI predictions are about on par with a horoscope. But there is nothing that sticks out as "OMG WRONG!"

But let's spot check our work anyway. As you can see that all scores are on a range of 0 to 6. A zero or one indicates a deficit. A score of 2 indicates a standard level of function. 3 or 4 is above average. 5 and 6 are superstars. (But note: to get a 5 or 6 you have to be deficient in at least on other area.)

Functioning charisma and high will are the hallmark of leaders. And this mode predicts that Commander, Executive, Debater, Entrepreneur, and Campaigner are leaders. When if comes to being outgoing and popular (as measured by will alone), this model predicts that Debater, Entrepreneur, Campaigner, and Entertainer are going to be our celebreties.

Now you may be looking at Consul (ESFJ), and note that George Washington, one of the greatest leaders in the History (at least according to my American History Books), was an ESFJ personality type. But I would also beg you to remember that George Washington lost more battles than he won. And many of hits defeats were as much down to outright bungling as they were to material advantage on the part of his adversary. When he did win a battle, it was down to two factors: Luck and the Skill of his subordinate commanders. How he got the job in the first place was down to... Luck. He was also an extremely tall and powerful person who could crack walnuts between his fingers. He was also a deeply spiritual man, who possessed a moral fiber that rivaled kevlar. That is exactly what the MSW model predicts! (High luck, low intellect, high dexterity/strength, high spirituality.)

Getting the world down to three numbers to randomly generate, and which can be used not only for skills tests but for personality is a boon. Naturally I still have to sit down and work out all of the rules for both. But having attributes that interact alchemically means that I get a lot of complex behavior pretty cheaply.

I do have to come up with my own personality indexes, of course, and those will look a little something like this:

Quirks

Quirks match on ranges of values on the Mind/Soul/Will scale. Those ranges are:
low0-1
normal2
enhanced3-4
superb5+

[set o {} set QUIRK_MATRIX { } foreach {mind soul will quirk description} [lsort -stride 5 -index 3 -dictionary { {< normal} - - dunce { Character has penalties on intelligence checks, but bonuses on charisma. Character also gains bonuses on trust building. } - {< normal} - amoral { Character has penalties on soul checks, but bonuses on persuasion checks. Character has penalties on building trust. Character is immune to guilt. } - - {< normal} introvert { Character gets bonuses when focus is required. Character feels uncomfortable in crowds. Character has penalties on charisma and persuasion checks. Character has penalties on magnetism tests with non-introverts, but bonuses with other introverts. } {< normal} enhanced enhanced {dumb_luck} { Low probability events with a positive effect are more likely to happen. Low probability events with a negative effect are less likely to happen. } - normal enhanced {extrovert} { Character has intrinsic need to interact with people. Character has bonuses on charisma and persuasion checks. Character has bonuses on magnetism tests for everyone but introverts. } normal normal {enhanced} {leader} { Character is a natural born leader. Character has bonuses on persuasion checks } - enhanced enhanced {dexterious} { Character has bonuses on dexterity checks. } {enhanced} {normal} {-} {technophile} { Individual can comprehend both the mechanical and complex. Bonuses on operatingt technology and composing computer code. } {enhanced} {normal} {normal} {writer} { Bonuses on written communication. } enhanced enhanced - {genius} { Character has bonuses on intelligences skills checks. Character has special ability to connect concepts across disciplines. Character can draw on information from the collective unconciousness. } superb - - {quant} { Character is able to perform special mental tasks that are impossible for others. } {< enhanced} enhanced {< enhanced} {aesthetic} { Character tends to live by ideals in thought and deed. Seeks to live a genuine life. And is utterly annoyed that the rest of us aren't as enlightended as that are. Character is psychicly aware of his/her surroundginds. Character recieves information from extra-sensory preception. Character has bonuses on tasks that require spirit. Character has special creative abilities. Penalties on persuasion but bonuses on charisma and magnetism. } - superb - {empath} { Character is psychicly sensitive to the emotions of other characters. Character can estimate success of charisma and persuasion checks. All negative effects from introvert are cancelled out. } - - superb {domineering} { Character has a tendency to dominate in conversations. Character has bonuses on charisma and persuasion checks. Character can make suggestions to weak willed characters. }}] { dict set QUIRK_MATRIX $quirk mind $mind dict set QUIRK_MATRIX $quirk soul $soul dict set QUIRK_MATRIX $quirk will $will dict set QUIRK_MATRIX $quirk description $description append o "" } return $o]
QuirkMindSoulWillDescription
$quirk$mind$soul$will$description

Personality Matrix

Below are all of the MTBI personalities represented by the same ranges for MSW. You'll note that some MSW personalities map to more than one MTBI personality. But... if you read between the lines of the MTBI description, most of the "traits" between those two or more types are more than papered over by individual variation.

Hi There

[set o {} proc rule_level {value} { switch $value { low { return 0 } normal { return 2 } enhanced { return 3 } superb { return 5} } error "Bad value $value" } proc rule_check {value cvalue} { if {$cvalue in {- {}}} { return 1 } set rvalue [rule_level $value] if {[llength $cvalue]>1} { foreach {operator rawlevel} $cvalue { set level [rule_level $rawlevel] if {![expr "$rvalue $operator $level"]} { return 0 } } return 1 } set level [rule_level [lindex $cvalue 0]] return [expr {$rvalue >= $level}] } foreach {index info} { {low normal superb} { quirk {extrovert} title {The Celebrity} mtbi {ESFP} description { The life of the party. The center of attention. Yet as annoying as they are, they have this way of getting their way. } } {low enhanced enhanced} { quirk {luck extrovert dunce} title {The Knight} mtbi {ENFJ} } {low superb enhanced} { quirk {luck extrovert empath dunce} title {The Empath} mtbi {ESFJ} } {normal normal enhanced} { quirk {} title {The Manager} mtbi {ENTJ, ESTJ} description { Not too good at anything. Not too bad at anything. But when working in a group they make the whole greater than the sum of its parts. } } {normal normal superb} { quirk {} title {The Drill Sergent} mtbi {ENFP} description { A doer of things, and herder of cats. } } {normal enhanced normal} { quirk {} title {The Aestetic} mtbi {ISFP} description { The starving artists. Character tends to live by ideals in thought and deed. Seeks to live a genuine life. And is utterly annoyed that the rest of us aren't as enlightended as that are. Character is psychicly aware of his/her surroundginds. } } {normal superb low} { quirk {} title {The Saint} mtbi {INFJ, ISFJ} description { A deeply spiritual individual. Despite their introvert tendencies, they are everyone's friend. } } {enhanced normal normal} { quirk {} title {The Writer} mtbi {INFP} description { This person lives to write, and express themself. Be it textbooks or novels or newspaper articles, this person's life is the written word. They also have a knack for expressing ideas to computers. They make great computer programmers as well. } } {enhanced enhanced low} { quirk {} title {The Engineer} mtbi {ISTJ} description { Brilliant with technology, magic, coding, you name it. Not much of a people person. Seems to pull half of his smarts from his head, and the other half from a Ouija board. } } {enhanced low superb} { ability {} title {The Pundit} mtbi {ENTP, ESTP} description { People with great ideas who don't take no for an answer. They are always right, regardless of the facts. But on the other hand, their drive and determination in the face of reality is essential for big projects, rescue work, or moving society out of its comfort zone. } } {superb low low} { quirk {} title {The Evil Genius} quirk {introvert} mtbi {INTP} } {superb normal normal} { quirk {} title {The Maestro} mtbi {ISTP} description { Great with his hands. Creative. Can hold a decent conversation. Can be a Mechanic or a Musician or practically anyting that requires people skills and mechanical skills. } } {superb normal low} { quirk {} title {The Scientist} mtbi {INTJ} description { Brilliant. But... Batty. } } } { dict set matrix $index $info lassign $index mind soul will #set quirks [dict getnull $info quirk] set quirks {} dict for {quirk rules} $QUIRK_MATRIX { if {![rule_check $mind [dict get $rules mind]]} continue if {![rule_check $soul [dict get $rules soul]]} continue if {![rule_check $will [dict get $rules will]]} continue lappend quirks $quirk } append o "" } return $o]
Range
MindSoulWillQuirksDescription
$mind$soul$will$quirks[dict getnull $info title][dict getnull $info mtbi][dict getnull $info description]


And for fun, I decided to break the system and show how it can handle abnormal personalities. And... the results are uncanny. [set o {} foreach {index info} { {low low low} { quirk {} title {The Henchman} mtbi {-} description { Abnormal: only has 0-3 points. A character who isn't developed in any way. Though it seems to perfectly describe every henchman in literature. It's also a fairly decent model for either an emergent AI or an individual locked at the mind of a toddler. } } {normal normal normal} { quirk {} title {The Emotional Cripple} mtbi {-} description { Abnormal: only has 6 points. Theoretical person who only allocates 2's for all scores. This could be a character who is either a young child or a person who grew up in an environment that stunted the growth of a normal personality. Note that this personality has absolutely no quirks whatsover. But we have totally met people like that, and if they were older than 6 or so, they totally grew up brainwashed. And as soon as they were allowed to develop for themselves they actually developed into a different personality. } } {enhanced enhanced enhanced} { quirk {} title {Lake Wobegon} mtbi {-} description { Abnormal: Requires 12+ points. A person from the land where everybody is above average. Or pretty much every lazy writer's default character on television. And probably the target that Human Resource departments is looking for in job ads. } } {superb superb superb} { quirk {} title {The Unicorn} mtbi {-} description { Abnormal: requires 15+ points. A Superhero, James Bond, or a main character straight out of a Heinlein novel. They manage to be brilliant at everything. And a giant annoying pain in the ass about it. } } } { dict set matrix $index $info lassign $index mind soul will #set quirks [dict getnull $info quirk] set quirks {} dict for {quirk rules} $QUIRK_MATRIX { if {![rule_check $mind [dict get $rules mind]]} continue if {![rule_check $soul [dict get $rules soul]]} continue if {![rule_check $will [dict get $rules will]]} continue lappend quirks $quirk } append o "" } return $o]
Range
MindSoulWillQuirksDescription
$mind$soul$will$quirks[dict getnull $info title][dict getnull $info mtbi][dict getnull $info description]
}