The above quote by Lord Chandos illustrates a thought I had – The goal of flattery in Siboot is to help put the other person in an emotional state of trust where they will agree to your “offer to reveals” later in the conversation (the same could be said of the “say,” “promise won’t betray,” “promise won’t attack,” and “tell” verbs).
After reading my post Flattery will get you, well, let’s see… Chris had some suggestions. Regarding the inputs he said:
- Remove Fear_Courage since the question “How much do I want to believe” is really one of vanity that can be handled using Vain_Modest.
- Remove pHated_Loved since it’s not as significant as pFalse_Honest to the problem. Also, it’s not “orthogonal” to pFalse_Honest.
- Remove Obnoxious_Charismatic since even extreme persuasiveness won’t overcome deep seated distrust.
- Add a magnitude to the flattery.
- Remove aFalse_Honest from the equation.
About the outputs, he said if the flattery is believed the pHated_Loved of the actor being flattered should be increased the magnitude of the flattery. If the flattery is not believed, the pHated_Loved and pFalse_Honest of the actor being flattered should be reduced.
Chris also gave me some sample scripts on implementing belief and the results of believing or not believing the flattery.
After thinking over his suggestions I decided to incorporate them in my design. I have a tendency at the start to overcomplicate things and I don’t think the player will get all the nuances my original design incorporates (especially given the fact that the current Storytron implementation is limited in how the player can track other actor’s emotional states and traits).
I created a small storyworld called “Flattery” so I could work on the equations in isolation (of course, I recycled the characters from LOST as my actors).
The belief equation that I’m working with is based off of the suggestions Chris made.
I decided to use a new trait in place of Vain_Modest called Credulous_Suspicious (C_S) which more accurately models the mental state I want to access.
So the operator that calculates whether or not an actor believes flatter takes three inputs – Credulous_Suspicious (C_M), perceivedFalse_Honest (pF_H), and a magnitude of flattery (fM). My initial stab at values for fM were
- subtly | – 0.4 | small
- normally | 0.0 | medium
- blatantly | 0.4 | large
After some experimentation I decided I needed a greater range of magnitude for flattery levels so I ended up with:
- meagerly | -0.6 | very small
- subtly | -0.4 | small
- normally | 0.0 | medium
- blatantly – 0.4 | large
- hyperbolically | 0.6 | very large
If an actor believes the flattery, an emotional reaction will adjust the actor’s pF_H by some factor of fM. If an actor doesn’t believe the flattery, emotional reactions will reduce the actor’s pF_H and pH_L (pHated_Loved). I modeled these reactions initially but deactivated them so I could focus on tweaking weights for the various components of the belief equation Blend.
I also decided to have four reactions to “flatters” – believes, thanks, is skeptical, rejects. Depending on the results of the belief equations the actor being flattered will choose one of the four options to respond with.
I’ve also having a side discussion with Chris trying to understand how perceivedTraits of one actor for another are calculated since perceivedFalse_Honest is one of the belief inputs. Right now, the rules appear to be:
- The checkbox next to a trait determines if it’s visible or invisible. If checked, the trait is visible; if un-checked, the trait is invisible.
- If a trait is visible, a PTrait[Viewer, Patient] is set equal to Trait[Patient] if KnowsMe[Viewer, Patient] (set in the Actor editor) is true.
- When a Viewer enters a stage and a Patient is on that stage:
- KnowsMe[Viewer, Patient] and KnowsMe[Patient, Viewer] are both set to true
- For visible traits, both actors PTraits are calculated according to rule 2.
- For invisible traits, both actors PTraits are initialized by an algorithm that takes the “true value” and the “Accord value” as inputs.
I’ve got some outstanding questions that I posed to Chris:
- What is “true value”? Is it Trait[Patient] in the case of calculating PTrait[Viewer, Patient]?
- What is “Accord value”? Is it ATrait[Viewer] in the case of calculating PTrait[Viewer, Patient]?
- What are the details about the algorithm used so we can have guidelines when setting ATraits?
- Is any initialization of PTraits[Viewer, Patient] done at startup if KnowsMe[Viewer, Patient] is set to true? (I’m assuming this is the situation rule B addresses.)
- Are PTraits recalculated every time one actor meets another? (I’m assuming this is true.)