I would love to see tantruming become more inter-related with social aspects of the game, like grudges and personalities. I don't think it makes sense for an entire fortress to break into tantrum at the death of 2 children, just because those were friendly with everyone. It would make more sense if for whatever weird reason, all dwarves happened to have a 'breaks easily under pressure' trait, but with that situation being highly unlikely, it feels too superficial.
With the current development focussing on personalities and their workings, I thought I'd add this suggestion for you to ponder.
Currently, tantruming is a rather simple process. A dwarf has X happiness, and if it falls below Y, the dwarf starts having a chance to tantrum, or even go completely bonkers, maybe with some of the older existing personality traits having some effect on either Y, chance to tantrum, or both.
I want to suggest splitting up events that at this point do nothing except give a bad thought and drain happiness into two categories, and changing the happiness mechanic a bit into a grumpiness mechanic
1) Stressors
- a stressor event will not cause tantrums in itself. Instead, it will put a dwarf into a state of mind that can best be described as 'on edge'
On edge status will make the dwarf more susceptible to annoyance.
Duration of this 'on edge' status vary depending on the stressor: for example, I can imagine the loss of a child putting a dwarf on edge for a longer period than witnessing the death of a goblin.
- some stressors temporarily also increase grumpiness.
In the same example, the loss of a child would, besides triggering the 'on edge' status (initial shock), also cause grumpiness (grief), while witnessing a goblin's death would cause 'on edge', but no bad thought (unless the specific dwarf is *very* empathic).
- stressors permanently raise the grumpiness floor. More on that below.
2) Annoyances
- an annoyance temporarily increases grumpiness
- it has a direct chance to trigger a dwarf to either have no effect, permanently increase grumpiness +1, make the dwarf go find someone in charge to yell at, tantrum, or even be miserable. Specific chances depend on annoyance type.
On edge greatly increases the chance for bad stuff happening here.
Some example
fictional tables:
Annoyance: Stung by a bee (on edge modifier)
no effect: 98% (-2%)
permanently raise grumpiness floor +1: 1%
find someone in charge to yell at: 0.7% (+0.75%)
find target for tantrum, tantrum: 0.3% (+0.75%)
miserable: 0% (+0.5%)
Annoyance: Slept in the mud
no effect: 90% (-10%)
permanently raise grumpiness floor+1: 9%
find someone in charge to yell at: 0.7% (+4.75%)
find target for tantrum, tantrum: 0.299999%(+4.75%)
miserable: 0.000001%(+0.5%)
Annoyance: Drank the same old booze again
no effect: 95% (-5%)
permanently raise grumpiness floor +1: 2%
find someone in charge to yell at: 3% (+2.25%)
find target for tantrum, tantrum: 0% (+2.25%)
miserable: 0%(+0.5%)
Annoyance: had to endure the decay of a friend (no proper burial)
no effect: 50% (-50%)
permanently raise grumpiness floor +1: 20%
find someone in charge to yell at: 20% (+24.75%)
find target for tantrum, tantrum: 9.5% (+24.75%)
miserable: 0.5% (+0.5%)
3) Grumpiness
Now what's this grumpiness you mentioned, you are asking. Well. Firstly, when describing dwarven moods, in my view of the dwarves, 'happiness' is not a good word. A dwarf's state of well-being should be measured with the word grumpiness instead.
Personal linguistic preference aside: I don't want to get rid of the happiness meter. I would like to see it changed though. very unhappy/.../happy/ecstatic anymore. Just grumpy, or not grumpy.
When a dwarf does not have enough happy thoughts to remain on the bright side of the grumpiness balance, it will become grumpy.
- being grumpy first of all affects social interactions. grumpy dwarves would have a harder time making / keeping friends, and an easier time forming grudges.
- being grumpy doubles the duration of any 'on edge' effect
- being grumpy increases the chance for bad stuff happening with annoyances, by reducing the percentage chance of the 'raise grumpiness floor +1' event to zero, raising the chance for miserable(/berserk/babbling), and redistributing that rest over the 'yell at someone in charge' and 'tantrum' chances.
The above example table for for 'slept in the mud' would become:
Annoyance: slept in the mud while grumpy (on edge)
No effect: 90% (-10%)
increase grumpiness floor +1: 0%
Yell at someone in charge: 4.95% (+4.75%)
Tantrum: 4.549999% (+4.75%)
miserable: 0.500001% (+0.5%)
Special note: When a dwarf attains the notorious 'does not care about anything anymore' trait, in this system it would:
* secure the grumpiness floor. No more changes to it can be made positive or negative. This means stressors do not add to the floor anymore.
* add the chance for 'grumpiness floor +1' from annoyance events to the chance for 'no effect', if not grumpy, or half of it to no effect, and the other half distributed as it would be normally, when grumpy.
- each dwarf would at birth start with a base grumpiness floor that depends on it's personalities. This grumpiness floor determines the minimum amount of happy thoughts that this dwarf needs to not become grumpy.
- as mentioned earlier, every stressor event raises the grumpiness floor, meaning more happiness is needed henceforth
- annoyance events, besides each having their own chance of making bad stuff happen, temporarily raise grumpiness
- certain events, like making a new friend, marriage, having children, realizing a dream will lower the grumpiness floor