Commit Graph

50 Commits

Author SHA1 Message Date
nemvar afa153a333 Another sanity revision. (#45716)
About The Pull Request

One day I will get this right.
Sanity no longer decays if you are above the allowed mood threshold.
Neutral mood no longer raises sanity.
Aheals now restore sanity for unstable people.
Fixes #45715
Why It's Good For The Game

Getting free maximum sanity from just being on neutral mood was a bit silly and counterintuitive. The sanity for being below the maximum allowed value was also a bit harsh.
Changelog

cl
balance: another sanity rebalancing.
/cl
2019-08-09 11:10:27 +12:00
nemvar 15c6dcc322 Switches some values around 2019-07-28 18:13:30 +02:00
nemvar fb44479c0b Fixes the math 2019-07-28 01:00:43 +02:00
nemvar 091f221fe6 Fixed mood for real 2019-07-28 00:48:07 +02:00
nemvar 214a3d452a In how many ways can this be broken? Find out next time! 2019-07-27 23:58:11 +02:00
nemvar 87f080bfbb Sanity is now capped. (#45410) 2019-07-25 14:06:36 +02:00
Qustinnus 41dcc97c7d Fixes sanity going up to 125 when mood is neutral (#45338)
* fixes

* var
2019-07-22 16:45:11 -07:00
nemvar 7ba60de3d6 Aheals now fix addictions and sanity. (#45329)
* Aheals now fix addictions and mood.

* Does it properly. Now uses a signal to detect the aheal.

* Removes a getComponent in living and puts that shit into the mood component.

* Fixes a small oversight with where I placed the moodie purge.
2019-07-22 15:42:30 -04:00
nemvar a176d30579 Fix moodie icon being wrong at roundstart (#45283)
Fixes an issue related to mood. They had the wrong sanity icon when 
spawned in. Yes, two is correct. Having exactly SANITY_NEUTRAL (100) 
will result in slightly positive sanity.
2019-07-20 16:41:35 -07:00
Emmett Gaines 328fc7b1f1 Adds elements: Lightweight shared components/Global components (#44817)
If you came here thinking this was some game feature then you are in the wrong place. Here is where I ramble about code.

This adds /datum/element as a sort of sibling to components. Only one of each type gets instanced and they do not get tied directly to any particular thing like a component does. Basically they're a very lightweight component for doing simple functionality that doesn't have much state.

Originally this concept came about as a kind of component that could be shared between many parents to reduce some resource costs. Doing this would allow us to componentize more behaviors that are a part of too many things to be viable to have a whole component for every single one. For example a component on every space turf would be entirely unviable. With elements it's much more reasonable.

This implements a prety bare framework and a couple components are migrated to it. It's ready to be used but I fully expect I'm going to need to refine how it works for all the usecases we'll want it for.

Also: this fixes the qdeleted signal. This signal isn't even possible because after qdel is done there's nothing to receive a signal anyway. I've changed it to a qdeling signal instead. I need it to work for some elements to know when to clean themselves up.
2019-07-09 11:26:51 +12:00
nemvar ba24766c08 Fixes area moodlets. (#45043)
* moodie

* newline
2019-07-08 13:14:04 -04:00
Garen Crownguard 534a9140aa merge 2019-07-05 17:59:38 -05:00
Qustinnus d9b316b7ab Sanity Rebalancing (#44800)
cl Floyd / Qustinnus
tweak: The Nanotrasen Physological department has realized that working at a metal deathbox is more stressful than it currently is. Mood has been slightly rebalanced
/cl

This PR is mostly a rebalance of various variables that exist withing the system. The system is now more likely to skew one of two ways instead of always hanging at neutral unless you're hungry, I plan to make it more likely to skew to one side from other things as well, and nerfed various low effort and non interesting interactions such as reading books while buffing the ones that have gameplay like drinking good bartender drinks or winning arcade games.

I also plan to add a moodlet for being in the bar; this will reinforce players to visit these areas if things get bad, or if they just want to refuel for a bit.
2019-07-03 19:32:09 +12:00
Garen Crownguard 3a37d0322c merge 2019-06-23 20:39:24 -05:00
granpawalton e92a3187a9 miasma temp and pressure (#44586)
* miasma temp and pressure

* temp changed from T20C to BODYTEMP_NORMAL
2019-06-18 21:29:05 +02:00
WJohn 39c86a8930 Fixes sanity minimum/maximum not affecting action speed (#44469)
If you were below 0 or above 125 sanity, the action speed multiplier
wouldn't come into play. Now it does. Also prevents sanity from
constantly going overboard and being reeled in all of the time.
2019-06-13 19:35:27 -07:00
nemvar ce479edd1a Ethereal stomach take 2 (#44336)
* Take 2

* Merge conflict begone

* Renames it

* Stupid borgs.
2019-06-10 00:29:37 +02:00
Garen Crownguard caa683e5b1 merge 2019-06-04 07:04:21 -05:00
Garen Crownguard 4b2fc4cc05 Removes Hygiene 2019-06-04 06:25:51 -05:00
AnturK 5d2b572450 Fixes mood events keeping hard references in category 2019-05-15 21:29:29 +02:00
Mickyan 3b5c9b5a34 [READY] Moves mood quirk checks to their respective quirk process (#43845)
* quirk process

* does the same for hygiene

* un-breaks miasma generation

* so how's your day going
2019-05-12 10:52:25 +12:00
vuonojenmustaturska fb45b7a017 Turns trait accessors into defines, fixes some bugs (#43820)
It's free performance.
2019-05-06 19:44:05 -04:00
WJohn 52637ff9ec Fixes neat/neet traits. (#43561) 2019-04-10 15:49:28 -04:00
tralezab 7762e72405 New trait: Unstable (#42904)
* nice.

*  They exist to cease.

*  "They've got eyes inside my head!"

* frick

* unstable insanity

* Just try taking this bull by the horns. (eyeballs)

* It's a thankless job, and you'll probably die in an explosion. But the pay is pretty good.

* "The best denials are simply that: a beginning and end unchanged, a dream with no memory."

* fixes the dme
2019-02-28 10:35:13 -05:00
Tad Hardesty 5fb918ebe4 Fix some variables with 'list' in the wrong place 2019-02-21 19:32:53 -08:00
tralezab 1733858ba8 [Ready] Happiness drug overdose has special mood icons, badass syndies get sunglasses on their moodlet, creeps get heart eyes (#42502)
* mood_event.dm

* runaway - kanye west

* didn't take forever debugging how nice

* fixes and sanity

* moods are fun
2019-01-30 22:44:54 +11:00
Tad Hardesty adb9c884d3 Create gas mixture and use assume_air 2019-01-03 16:00:20 -08:00
Tad Hardesty 42250b3d5e Stinky people no longer stink up space 2019-01-02 15:49:12 -08:00
Qustinnus 0de28b726a [READY]Humans now have hygiene (DOES NOT AFFECT MOOD GO AWAY MOODPOSTERS) (#41986)
cl Floyd / Qustinnus
tweak: You now have to be naked to get the nice shower moodlet, if you shower with clothes you get a bad moodie
add: Hygiene, you slowly become dirty over time, the more covered in blood you are the faster you will lose hygiene. When you are too dirty you will have a stink overlay. (Hygiene doesn't affect mood currently) It also spawns miasma slowly if you smell like shit.
add: adds NEET and neat traits. NEET's get 20 bucks social welfare extra and like being unhygienic, while neat people dislike being unhygienic and like being hygienic
/cl

This doesn't affect mood so plssss dont strawman in this PR about how I'm forcing you to shower or die or whatever

This PR is mostly visual and will allow for people to judge others for literaly being smelly as hell.

also NEET and neat traits which interact with being smelly. (neat likes hygiene, dislikes lack of it. NEETs like lack of hygiene and get some social welfare (20 bucks))
2019-01-02 01:04:51 +13:00
Qustinnus b9f5dbac6b Adds a new race: Ethereal (also adds wrappers for nutrition adjustment) (#40995)
cl Qustinnus / Floyd / Ethereal sprites by Space, is that it? / Alerts and food sprites by MrDroppodBringer
add: Adds Ethereal; a race which lives off of electricity and shines bright. If they are healthy they shine a bright green light, and the more damaged they are, the less they shine and the greyer they become. Their punches do burn damage and they are weak to blunt attacks!
They dont need to eat normal food and dont have nutrition, Instead they gain charge by going into borg rechargers, eating ethereal food or doign specific interactions.
refactor: all nutrition changes now go through a proc so we can override behavior
/cl

Adds Ethereal. A race which is essentialy inspired by Zoltan but then with different mechanics to make it fit with SS13 more. I'm trying to stay away from making them actually provide power but the change from nutrition to electricity seemed kind of fun.

They have the following specifications:

    They are walking lights; and shine bright and green if healthy, and get greyer and darker the more damaged they are. When dead they are just a grey unlit corpse.
    They do burn punch damage instead of blunt.
    They are weaker to blunt; especially when low on charge
    They have charge instead of nutrition. Charge is gained by some interactions or by going into a borg charger. or eating new ethereal food.
    They are slightly stronger to shock damage, and gain charge from it a bit; however, it is still deadly to them and thus they aren't free insulated gloves.
2018-11-29 10:09:56 +13:00
Mickyan f74da96676 Voracious quirk lets you binge on junk food, gives positive mood while fat (#41541)
* voracious tweaks

* description
2018-11-19 14:38:12 -05:00
Qustinnus c7f18988db Adds icon for sanity (#41141)
cl Floyd / Qustinnus (sprites by Mickyan)
fix: sanity can now reach its highest level
imageadd: Adds HUD icons for sanity
/cl
2018-10-27 13:19:33 +13:00
Qustinnus 3b12a40fcc Legion core / aheal now only removes temp moodies. also bad moodie for using it (#40657)
cl Floyd / Qustinnus
fix: Legion core / aheal now only removes temp moodies
add: Legion cores now give you a bad moodlet
/cl

#40110

fixes
2018-10-17 23:18:59 +13:00
Emmett Gaines 5d8419541b Adds movetype based speed modifiers and makes the mood speed mod use it (#40581)
This allows us to more easily keep track of speed modifiers which only affect certain move modes. Also cleans up a small bit of movespeed and mood code while I'm at it.
2018-10-17 23:17:07 +13:00
ninjanomnom 7b7074893d Fixes some forgotten signals in origin signal refactor 2018-08-29 11:49:24 -04:00
Emmett Gaines 0943e56e08 Adds the signal origin as the first arg to all signals (#39861)
* Adds the signal origin as the first arg to all signals

* Fixes some storage and nanite procs
2018-08-28 18:28:29 +03:00
Qustinnus b3eccaadc3 Makes some improvements to mood code (#39750)
removes useless mood events subtypes
fixes mood event timers not resetting when they get triggered again
removes the depression overlay which makes our fruit happy
2018-08-19 14:58:07 -07:00
Qustinnus 977001929c Move nutrition events to the mood component (#39743) 2018-08-17 16:13:04 -07:00
bgobandit 7df3ffb4db Fixes various small issues with moodlets; adds one for exercise. (#39437)
Adds a slight positive moodlet for working out, the same effect as reading a book

In the process refactors weight machines so they are actually object oriented, this creates map edits to Delta and Pubby as well as one ruin

Changes the message "Nothing special has happened to me" to something that is hopefully less immersion-demolishing.

Moodlet text for eating disgusting food no longer appears in positive green text
    Other various grammar fixes
2018-07-31 11:15:59 +12:00
Emmett Gaines 26c1031661 Refactors create_mob_hud() to add a signal (#39364)
* Refactors create_mob_hud() to add a signal

and make the mood component use it

* Register for the hud element click

* Observe observer safety
2018-07-29 17:47:16 +12:00
Grandmother of 50 90a1b8c363 Mood Code Improvements [Merge-Ready?] (#39075)
fix: having higher sanity is no longer punished by making you enter crit faster
balance: you can have 100 mood instead of 99 before it starts slowly decreasing


Remember higher sanity is BETTER

You want crit_modifier (now crit_threshold) to be LOW so you can stay in fights more (you go into crit at 5hp vs 0hp).

Why: Proc overhead, puts the load on mood, proper abstraction of mood component, values > defines, etc.
2018-07-20 11:33:00 +12:00
vuonojenmustaturska 05146d27c8 Fix mood component signal registering (#38991)
Yeah uh, strings can't host components and these flat out just runtime at roundstart, leading to moods being flat out broken.
2018-07-09 11:16:35 +12:00
Qustinnus 284f90a3ab Makes some requested changes to mood (#38851)
cl Floyd
del: removed beauty / dirtyness
balance: Mood no longer gives you hallucinations, instead makes you go into crit sooner
/cl

oranges requested these changes, i havn't coded in DM for a while so I might have made some mistakes
2018-07-08 13:50:54 +12:00
Emmett Gaines 34a3d2da4d Refactors component signals registration (#38798)
Datums know what signals are being listened for and components can now be registered to listen for signals on more than one object.
2018-07-05 00:56:39 +03:00
Jordan Brown a1b89c3643 Removes redundant COMPONENT_INCOMPATIBLE crashes (#37389) 2018-04-25 06:53:43 -04:00
BeeSting12 f2f11c9d33 >happend 2018-03-27 14:29:21 -05:00
Qustinnus f79de1ec9b Adjusts the behavior of Mood on sanity (#36640)
cl Floyd / Qustinnus
balance: Changes rate of sanity drain and caps it depending on mood
/cl
Kor gave me permission to work on mood during the freeze so I could stop the fuckload of people that ping me 5 times with insults.

If you are only slightly sad, you wont go insane, but go to a cap, to go insane you /need/ to be in a bad mood at the same time, or you will go back to sane really fast. Also sanity drain rates lowered.

Also if there's bugs/issues with mood just make an issue on the issue trackers, I dont need you pinging me at 4AM to tell me how I'm horrid at things. It'll just make me get a headache. I'm making PRs in good faith, not to annoy the playerbase. The same respect in return would be appreciated.

If mood doesn't work out after this the Headmins will turn off the config, and I'll look into either rebalancing it or repurposing it.
2018-03-23 18:51:09 +13:00
Qustinnus af2afa1cc0 Being happy no longer makes you obese. (#36565)
* D O U B L E N E G A T I V E

* jesus
2018-03-21 16:34:46 -04:00
Qustinnus 4911991f70 [READY] Several fixes/changes to mood, longterm mood effects, beauty component (#36344)
cl Floyd / Qustinnus
del: Removes short-term effects of mood
add; Adds long-term effects of mood by implementing sanity which goes up with good mood, down with bad mood, but takes time to change. Your sanity can be seen as your average mood in the recent past. All effects of moods are now covered by this system
add: Beauty component, currently only attached to cleanables, but you could attach it to any atom/movable and make them pretty/ugly, affecting mood of anyone in the room.
refactor: Removes the original way of adding mood events, uses signals properly instead.
fix: Cleanables "giving" area's free beauty during initialization
fix: Fixes some events not clearing properly
/cl

Fixes #36444

From now on mood no longer affects you directly, instead it decides whether your sanity goes up or down, when your sanity gets too low you will get the effects of what mood did before.

This means getting hit with bad moods due to being attacked while not mean you are doomed anymore, and you get a large timeframe to get away and just fix your mood later.

I also added the beauty component, you could add this to any object and it would either make a room prettier or uglier, comparable to DF or Rimworld. You could add traits to make certain people ugly, for example.
2018-03-18 19:48:50 +13:00
Qustinnus 5140cff38c [reviewpls] Adds moodlets to the game - [Please give suggestions for trait additions in comments] (#35475)
Floyd / Qustinnus (Sprites by Ausops, Some moodlets by Ike709)

add: Adds mood, which can be found by clicking on the face icon on your screen.
add: Adds various moodlets which affect your mood. Try eating your favourite food, playing an arcade game, reading a book, or petting a doggo to increase your moo. Also be sure to take care of your hunger on a regular basis, like always.
add: Adds config option to disable/enable mood.
add: Indoor area's now have a beauty var defined by the amount of cleanables in them, (We can later expand this to something like rimworld, where structures could make rooms more beautiful). These also affect mood. (Janitor now has gameplay purpose besides slipping and removing useless decals)
remove: Removes hunger slowdown, replacing it with slowdown by being depressed
imageadd: Icons for mood states and depression states


What this PR is

This PR adds a system that allows player to gain and lose moodlets based on events occuring to, and around them. These events then give the player a mood value based on what it is. For example a hug could give you +1 mood, while being stabbed in the eye with a screwdriver can give -5 mood. All these moodlets together determine the mood of your character which currently affects the following things:

    Movement speed - If you are very sad you move slower. Replacing movement slow from hunger. (hunger now instead affects mood)
    Screen blur - If you are sad you gain an overlay that slightly blurs the screen, increasing in severity as you get sadder.
    Interaction / do after speed - If you are sad or happy your interaction speed with things such as handcuffs is changed. with a 25% longer time if you are sad, or 10% shorter time if you are extremely happy.
    Hunger rate - You gain hunger slower if you are very happy.
2018-03-08 14:15:57 +13:00