[A16] Psychology (2017-5-14)

Started by System.Linq, August 19, 2016, 07:16:38 AM

Previous topic - Next topic

System.Linq

And I forgot to take out the debug code. Updated to 2017-1-1 v2.

Adalah217

Quick note about anxiety again: I've tended it over 20 times, mostly with herbal although fairly often with no medicine, and it's only gone from extreme to major. Of course, it would go away faster with medicine and a doctor with medicine >7, but it still seems excessive to hang around this long (almost 2 in game years). Is there something I'm missing? I'm playing a medieval playthrough starting in the arctic so I don't have much access to drugs quite yet. 

Here's the save-file data specifically regarding this pawn's anxiety:


<li Class="Psychology.Hediff_Anxiety">
<def>Anxiety</def>
<ageTicks>6431495</ageTicks>
<severity>0.5454115</severity>
<causesNoPain>True</causesNoPain>
<tendTick>20395952</tendTick>
<tendQuality>0.1360115</tendQuality>
<tendedCount>21</tendedCount>
<severityPerDayNotImmuneRandomFactor>4.115681</severityPerDayNotImmuneRandomFactor>
</li>

broccoli

Quote from: Adalah217 on January 01, 2017, 08:21:19 AM
it still seems excessive to hang around this long

I'm in a similar situation and feel the same way, it's taking much longer than I expected (despite using Medicine). Also the restFallFactor debuff seems a tad harsh, but that's just my opinion.

System.Linq

I imagine it's the tendQuality of 0.1360115. That seriously reduces the rate at which it goes down.

I don't find that excessive. Anxiety needs real medicine, it's a serious and debilitating mental illness. Your pawn also has a pretty dire case of it, so the fact that it's going down at all is probably fortunate.

Draegon


Love

I'm someone who suffers severe anxiety and even I think this mod's anxiety implementation is excessive. It is far too common for how widespread it seems to be.

System.Linq

#141
I don't control the commonness of anxiety. Hediffs are given randomly by the game based on a pawn's age. There is no XML factor to control the commonality of a disease in pawn generation. Anxiety is set to affect only about 2% of pawns by 24 years of age, down to 0.06% by 36. In real life, about 18% of the U.S. population is diagnosed with some form of anxiety.

I can look into trying to lower the age fraction chance values to make it show up less.

e: To clarify, it doesn't seem to matter what I do to the age curve for anxiety. It is not supposed to show up at all in pawns past 48 years of age. The pawn generator just seems to care whether or not a pawn is old for the purposes of assigning them health problems, not how common they are at that age.

Love

Quote from: Psychology on January 01, 2017, 03:51:45 PMIn real life, about 18% of the U.S. population is diagnosed with some form of anxiety.

The study you're referring to is actually for a 12-month prevalence. The national institute of mental health actually pegs lifetime prevalance much higher, at 28.8%.

And to be honest with you, you should take it with a grain of salt. The cited work dates all the way back to 2005 and casts a really wide net in terms of identifying various forms of mental disorders. If you put what seems to be a normal person through every rigorous physical and mental health screening that medical studies use you'd read the results and think you just diagnosed a human trainwreck.

Kyna Tiona

Quote from: Love on January 01, 2017, 04:15:22 PM
If you put what seems to be a normal person through every rigorous physical and mental health screening that medical studies use you'd read the results and think you just diagnosed a human trainwreck.

I mean, my impression was that the average person actually is a human train wreck, but...

System.Linq

#144
Regardless, anxiety is not really supposed to be as common as it is. It's supposed to generate primarily for pawns 16-45, heavily weighted towards the young. Instead, it generates primarily for pawns 40-100, because it seems to literally just slap some random illnesses on a pawn based on how old they are.

e: I just checked the code. That's literally exactly what it does. So to answer your question, it's not any more common than any other health problem. It's just weighted the same as all the rest when a pawn is generated. The age curve only matters for existing pawns.

Kyna Tiona

Quote from: Psychology on January 01, 2017, 04:24:14 PM
Instead, it generates primarily for pawns 40-100, because it seems to literally just slap some random illnesses on a pawn based on how old they are.

Oof, is that a vanilla thing? I'd thought it always seemed like older pawns acquired medical conditions frustratingly easily, but I didn't realize it was abject random...

System.Linq

#146
Older pawns are generated with more medical conditions. It seems to be that they have one chance to generate one per year old they are generated at. So a pawn that is created at 84 years old has 84 chances to get a health problem, and then the health problem's severity is scaled based on how age affects the severity. A pawn that is created at 18 has only 18 chances, and what age you're supposed to get that health problem at doesn't seem to matter at all for the purpose.

e: Nevermind, this is false. The code actually just checks each year of a pawn's life to see if they develop a health problem. I set one factor on the curve to 100% and every pawn generated with anxiety. So the problem is that older pawns just have more chances to contract it. I need to change the probability to be based on how likely a pawn is to contract it at that age, not what percent of pawns at that age should have it.

Adalah217

Quote from: Psychology on January 01, 2017, 04:36:38 PM
e: Nevermind, this is false. The code actually just checks each year of a pawn's life to see if they develop a health problem.

I suspected this is what was happening. Same is true with vanilla diseases obvi. The pawn is like in their 50's, and I think the generation of this disease is fine IMO. It applies to as many pawns as it needs to be without being excessive, and it feels real. It'd be neat if it was closer to reality, but that's besides the point I was trying to raise earlier.

My main problem is the expense it has created, with seemingly no way to anticipate the length/cost it will take to get rid of. It takes good medicine and/or a good doctor to get rid of. I understand this, but it shouldn't mean it's impossible to cure without these given time and fairly poor treatment. As it stands, the expense of a pawn with major anxiety is simply not worth it if you don't have a doctor. It's probably about as bad as dementia, except far more common (in terms of gameplay). You could tackle how common it is, but I think a better solution is a debuff for minor and major. Severe should feel like a hardcore penalty with the pawn cowering frequently. But minor anxiety? That already takes good medicine every few days (lest it progress further) along with other penalties.

That being said, a simple display of how far the disease has progressed, similar to other diseases in the game, would make this feel more fair as it is. Is it possible to have a "Severity: #%" display? I'm not good with C# :)

I could then decide if someone if gonna be a cowboy hat or the one tailoring it. 

System.Linq

It used to be a trait, so curing it isn't really on the table. If you regress it to the lowest level of severity, it applies a 0.5% increase in mental break threshold and nothing else. That's as close to curing it as you'll get.

In addition to changing the age generation curve, I'll be nerfing the tiredness gain slightly and renaming some of the stages. Unfortunately, while it is possible to display the severity (see: infections) I couldn't find any way to toggle that on or off. It may only be for infections.

Adalah217

Quote from: Psychology on January 01, 2017, 05:54:29 PM
It used to be a trait, so curing it isn't really on the table. If you regress it to the lowest level of severity, it applies a 0.5% increase in mental break threshold and nothing else. That's as close to curing it as you'll get.

Ah I didn't know it used to be a trait. It also has the hidden cost of being treated every few days or it will progress further (right? which is why it would be nice to have the display). Doesn't it also still give cowering and nightmares too? Maybe I'm overthinking it. That cost doesn't sound like much at all; you're right. Maybe it's just the psychology of seeing a disease and thinking "that's bad!"!


Quote from: Psychology on January 01, 2017, 05:54:29 PM
In addition to changing the age generation curve, I'll be nerfing the tiredness gain slightly and renaming some of the stages. Unfortunately, while it is possible to display the severity (see: infections) I couldn't find any way to toggle that on or off. It may only be for infections.

I love the changes.

I tried fiddling around with the xml, and yes it seems to be some assembly stuff. It's new to A16, so who knows.