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.
MTBI Attribute | Score | MTBI Attribute | Score |
[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 "$mtbi | $con | $mtbio | $cono |
"
}
return $o]
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:
MTBI | Mind | Soul | Will | | Description |
[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 "$mtbi | "
#append o "$pop | "
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 "$v | "
}
if {[dict get $combo will]>7} {
set rarity [expr {$rarity*3}]
} elseif {[dict get $combo will] > 4} {
set rarity [expr {$rarity*2}]
}
append o "[dict get $combo will] | "
append o "[dict get $combo total] | "
#append o "[format %.2f $rarity] | "
append o "$description | "
}
append o "
| [dict get $sum mind] | [dict get $sum soul] | [dict get $sum will] |
"
return $o]
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:
low | 0-1 |
normal | 2 |
enhanced | 3-4 |
superb | 5+ |
Quirk | Mind | Soul | Will | Description |
[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 "$quirk | $mind | $soul | $will | $description |
"
}
return $o]
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
Range | |
Mind | Soul | Will | Quirks | Description |
[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 "$mind | $soul | $will | $quirks | [dict getnull $info title] | [dict getnull $info mtbi] | [dict getnull $info description] |
"
}
return $o]
And for fun, I decided to break the system and show how it can handle abnormal
personalities. And... the results are uncanny.
Range | |
Mind | Soul | Will | Quirks | Description |
[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 "$mind | $soul | $will | $quirks | [dict getnull $info title] | [dict getnull $info mtbi] | [dict getnull $info description] |
"
}
return $o]
}