All the Feels
Hey Folks! Continuing work on AI needs, thresholds, and other related systems today. And as you can see, I may have introduced a bug. Sorry Andrella...
In fact, it looks like a pretty minor glitch. I recently re-tooled the loot system to make it work with conditions a bit more smoothly, and in my haste to try it out, I caused all of the thresholds to apply their payloads all of the time, regardless of whether they were triggered. Should be just a matter of applying their amounts to the loot before applying the loot to the AI.
It's been a pretty busy day, though. A huge amount of stuff shifting under the hood, to make way for more AI depth and drama.
First of all, I finally got around to adding the rest of the stats. Up until now, I've had stats for:
Basically, a small sampling of the NEO Scavenger physical needs, plus a full suite of emotional needs (new in Ostranauts). Most of this was to get proof-of-concept working, and I had always intended to follow-up with the "rest" of the stats when the system was done.
Well, today, as I was thinking about how various character traits would affect needs, I hit this particular roadblock again. And rather than kicking the can down the road again, I finally added the remaining stats from NS, plus some new stats I wished I had in NS (* denotes a new one):
- Atrophy* - muscles/body wasting away due to low-g and/or lack of use.
- Blood - Red blood cell volume, same as NS.
- Encumbrance - Same as NS.
- Hydration - Same as NS.
- Hygiene - Cleanliness.
- Infection - Same as NS.
- Pain - Same as NS.
- Poison* - Non-disease toxins in body.
- Rest* - Fatigue, as opposed to sleep debt.
- Rads* - Radiation exposure.
- Satiety* - How hungry one feels, vs. actual malnutrition.
A couple of these are splitting the old NS stats into two or more new stats, since the old NS stats covered a couple of things. E.g. one needs a rest after sprinting, but not necessarily a nap.
Now that these are in place, I can finally start bringing over a lot of the conditions I've been meaning to from NS. Things like nausea, headaches, vomiting, etc. And I can start hoking them up with stats and other conditions.
Which brings me to another change: I realized I'm going to need certain conditions to chain-apply certain other conditions when received. E.g. when one gets the "headache" condition, it should apply pain stats, and maybe some others like a decrease in altruism.
As it turns out, my conditions already did this for sleep (sleeping would impart a negative sleep comfort per-hour to simulate waking up after "enough" sleep). The threshold system can do this, too, but some cases will make sense on every recipient, while others only apply to recipients with that particular threshold listener.
And yet another area I explored today was coping mechanisms. For each stat deficiency, AI should have some coping mechanisms to use.
Currently, we have about 1 or 2 for each stat, which is where you see things like push-ups for achievement, or chit-chat for social contact. These are, again, there as proof-of-concept.
In the final game, I'd like for there to be more to choose from. If an AI is stressed due to lack of security, there should be both healthy and unhealthy coping mechanisms for it to use. Selfless types might use charity or helping others to cope with anxiety, neat freaks might clean. Cruel types might "punch down" on weaker crew mates, while optimists might rationalize failures as for the better good.
This is more of a "hard" filtering that can be applied to branching decisions in the interaction chain. While a "softer" effect might be the thresholds being higher for certain trait/stat combos.
Overall, the desired effect is for certain AIs to feel like they have personalities, certain ways to deal with things, and somewhat predictable-yet-unique outcomes when presented with choices. And the bulk of the work just ahead of me is finally filling-in a lot of the blank data slots for things I laid out a long time ago.