ensemble-engine/ensemble

Let characters form volitions about changing other characters' schema values

meldckn opened this issue · 0 comments

Currently, you can't write volition rules that let one character increase/decrease their volition to change the values of other characters' schema types.

For example:

  • You might want a character to be able to form a volition to increase their friend's health or happiness if they see that it's low.
  • You might want a jealous character (A) to be able to try to lower B and C's reciprocal relationship value.

You can't represent these in the current model of volition rules. Characters can only form volitions about their own schema values (their own traits), or relationships that they're a part of (not that they're third-party to).

This capability would allow for a lot of interesting social phenomena, e.g., character knowledge phenomena reasoning.

Adding this totally reasonable feature would require deep investigation of what calculateVolitions() is doing (along with any other functions that manipulate volition objects), to see if it is even possible without large library refactoring.

On the data representation side, you might allow this by restructuring the volition effects object:

Current volition rule effects property structure example:

"effects": [
  {
    "category": "attribute",
    "type": "strength",
    "first": "someone",
    "weight": 5,
    "intentType": true,
    "value": true
  }
]

Proposed new volition rule effects property structure example:

"effects": [
  {
    "volitionHolder": "someone",
    "volition": { 
      "category": "attribute",
      "type": "strength",
      "first": "friend",
      "weight": 5,
      "intentType": true,
      "value": true
    }
  }
]

(Notice that the volitionHolder and the first (or second if there is one) mentioned in the nested volition object can but don't have to be the same people)

—Btw, this is another modeling limitation brought to light by @bluestar514 while modeling her thesis domain about being a barkeep in a RPG-esque town. Thanks Beth!