Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

[READY]Humans now have hygiene (DOES NOT AFFECT MOOD GO AWAY MOODPOSTERS) #41986

Merged
merged 15 commits into from Jan 1, 2019
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions code/__DEFINES/atmospherics.dm
Expand Up @@ -303,3 +303,4 @@ GLOBAL_LIST_INIT(pipe_paint_colors, list(

#define MIASMA_CORPSE_MOLES 0.02
#define MIASMA_GIBS_MOLES 0.005
#define MIASMA_HYGIENE_MOLES 0.01
2 changes: 2 additions & 0 deletions code/__DEFINES/economy.dm
Expand Up @@ -7,6 +7,8 @@
#define PAYCHECK_HARD 100
#define PAYCHECK_COMMAND 200

#define PAYCHECK_WELFARE 20 //NEETbucks

#define ACCOUNT_CIV "CIV"
#define ACCOUNT_CIV_NAME "Civil Budget"
#define ACCOUNT_ENG "ENG"
Expand Down
55 changes: 28 additions & 27 deletions code/__DEFINES/misc.dm
Expand Up @@ -24,34 +24,35 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
//define THIS_PROC_TYPE_WEIRD_STR_WITH_ARGS "[THIS_PROC_TYPE_WEIRD]([args.Join(",")])" //Ditto

//Human Overlays Indexes/////////
#define MUTATIONS_LAYER 26 //mutations. Tk headglows, cold resistance glow, etc
#define BODY_BEHIND_LAYER 25 //certain mutantrace features (tail when looking south) that must appear behind the body parts
#define BODYPARTS_LAYER 24 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
#define BODY_ADJ_LAYER 23 //certain mutantrace features (snout, body markings) that must appear above the body parts
#define BODY_LAYER 22 //underwear, undershirts, socks, eyes, lips(makeup)
#define FRONT_MUTATIONS_LAYER 21 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 20 //damage indicators (cuts and burns)
#define UNIFORM_LAYER 19
#define ID_LAYER 18
#define HANDS_PART_LAYER 18
#define GLOVES_LAYER 17
#define SHOES_LAYER 16
#define EARS_LAYER 15
#define SUIT_LAYER 14
#define GLASSES_LAYER 13
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 11
#define NECK_LAYER 10
#define BACK_LAYER 9
#define HAIR_LAYER 8 //TODO: make part of head layer?
#define FACEMASK_LAYER 7
#define HEAD_LAYER 6
#define HANDCUFF_LAYER 5
#define LEGCUFF_LAYER 4
#define HANDS_LAYER 3
#define BODY_FRONT_LAYER 2
#define MUTATIONS_LAYER 28 //mutations. Tk headglows, cold resistance glow, etc
#define BODY_BEHIND_LAYER 27 //certain mutantrace features (tail when looking south) that must appear behind the body parts
#define BODYPARTS_LAYER 26 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
#define BODY_ADJ_LAYER 25 //certain mutantrace features (snout, body markings) that must appear above the body parts
#define BODY_LAYER 24 //underwear, undershirts, socks, eyes, lips(makeup)
#define FRONT_MUTATIONS_LAYER 23 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
#define DAMAGE_LAYER 22 //damage indicators (cuts and burns)
#define UNIFORM_LAYER 21
#define ID_LAYER 20 //lmao at the idiot who put both ids and hands on the same layer
#define HANDS_PART_LAYER 19
#define GLOVES_LAYER 18
#define SHOES_LAYER 17
#define EARS_LAYER 16
#define SUIT_LAYER 15
#define GLASSES_LAYER 14
#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt?
#define SUIT_STORE_LAYER 12
#define NECK_LAYER 11
#define BACK_LAYER 10
#define HAIR_LAYER 9 //TODO: make part of head layer?
#define FACEMASK_LAYER 8
#define HEAD_LAYER 7
#define HANDCUFF_LAYER 6
#define LEGCUFF_LAYER 5
#define HANDS_LAYER 4
#define BODY_FRONT_LAYER 3
#define SMELL_LAYER 2
#define FIRE_LAYER 1 //If you're on fire
#define TOTAL_LAYERS 26 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
#define TOTAL_LAYERS 28 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;

//Human Overlay Index Shortcuts for alternate_worn_layer, layers
//Because I *KNOW* somebody will think layer+1 means "above"
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/mobs.dm
Expand Up @@ -144,6 +144,11 @@
#define SANITY_CRAZY 25
#define SANITY_INSANE 0

//Hygiene levels for humans
#define HYGIENE_LEVEL_CLEAN 250
#define HYGIENE_LEVEL_NORMAL 200
#define HYGIENE_LEVEL_DIRTY 75

//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
Expand Down Expand Up @@ -262,6 +267,7 @@

#define HUNGER_FACTOR 0.1 //factor at which mob nutrition decreases
#define ETHEREAL_CHARGE_FACTOR 0.12 //factor at which ethereal's charge decreases
#define HYGIENE_FACTOR 0.1 //factor at which mob hygiene decreases
#define REAGENTS_METABOLISM 0.4 //How many units of reagent are consumed per tick, by default.
#define REAGENTS_EFFECT_MULTIPLIER (REAGENTS_METABOLISM / 0.4) // By defining the effect multiplier this way, it'll exactly adjust all effects according to how they originally were with the 0.4 metabolism

Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/obj_flags.dm
Expand Up @@ -35,3 +35,4 @@
#define MASKINTERNALS (1<<3) // mask allows internals
#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc
#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body.
#define SHOWEROKAY (1<<6) //prevents you from being stupid if you shower in them
2 changes: 2 additions & 0 deletions code/__DEFINES/traits.dm
Expand Up @@ -86,6 +86,8 @@
#define TRAIT_TAGGER "tagger"
#define TRAIT_PHOTOGRAPHER "photographer"
#define TRAIT_MUSICIAN "musician"
#define TRAIT_NEET "NEET"
#define TRAIT_NEAT "neat"

// common trait sources
#define TRAIT_GENERIC "generic"
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/bitfields.dm
Expand Up @@ -141,6 +141,7 @@ GLOBAL_LIST_INIT(bitfields, list(
"MASKINTERNALS" = MASKINTERNALS,
"NOSLIP" = NOSLIP,
"THICKMATERIAL" = THICKMATERIAL,
"SHOWEROKAY" = SHOWEROKAY,
),
"tesla_flags" = list(
"TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE,
Expand Down
1 change: 1 addition & 0 deletions code/_onclick/item_attack.dm
Expand Up @@ -110,6 +110,7 @@
add_splatter_floor(location)
if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood
user.add_mob_blood(src)
user.adjust_hygiene(-10)
return TRUE //successful attack

/mob/living/simple_animal/attacked_by(obj/item/I, mob/living/user)
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/processing/quirks.dm
Expand Up @@ -16,7 +16,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/Initialize(timeofday)
if(!quirks.len)
SetupQuirks()
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"))
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list(list("Neat","NEET")))
return ..()

/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
Expand Down
34 changes: 34 additions & 0 deletions code/datums/components/mood.dm
Expand Up @@ -156,6 +156,7 @@
clear_event(null, "depression")

HandleNutrition(owner)
HandleHygiene(owner)

/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)
if(amount == sanity)
Expand Down Expand Up @@ -301,5 +302,38 @@
if(ETHEREAL_CHARGE_ALMOSTFULL to ETHEREAL_CHARGE_FULL)
add_event(null, "charge", /datum/mood_event/charged)


/datum/component/mood/proc/HandleHygiene(mob/living/carbon/human/H)
switch(H.hygiene)
if(0 to HYGIENE_LEVEL_DIRTY)
if(has_trait(TRAIT_NEAT))
add_event(null, "neat", /datum/mood_event/dirty)
if(has_trait(TRAIT_NEET))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stupid ass trait system, shoudl be datums so you can register signals to the trait to generate the mood events

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yell at the traits guy

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The traits guy is gone.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i said traits not quirks

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

traits do their job, sometimes they're not the best choice though

in this case you could probably make the quirk register a shower or wet signal on the mob to react properly like oranges said

add_event(null, "NEET", /datum/mood_event/happy_neet)
HygieneMiasma(H)
if(HYGIENE_LEVEL_DIRTY to HYGIENE_LEVEL_NORMAL)
if(has_trait(TRAIT_NEAT))
clear_event(null, "neat")
if(has_trait(TRAIT_NEET))
clear_event(null, "NEET")
if(HYGIENE_LEVEL_NORMAL to HYGIENE_LEVEL_CLEAN)
if(has_trait(TRAIT_NEAT))
add_event(null, "neat", /datum/mood_event/neat)
if(has_trait(TRAIT_NEET))
clear_event(null, "NEET")

/datum/component/mood/proc/HygieneMiasma(mob/living/carbon/human/H)
// Properly stored humans shouldn't create miasma
if(istype(H.loc, /obj/structure/closet/crate/coffin)|| istype(H.loc, /obj/structure/closet/body_bag) || istype(H.loc, /obj/structure/bodycontainer))
return
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I suppose that technically, people who haven't showered that are hanging out in COFFINS won't create bad smells.

But you could just make a subtype of the Rot component, which would save the repeated gas code.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then id have to keep adding/killing the component which seems ass

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More or less ass than duplicating a bunch of code that doesn't need to be duplicated.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure, the code isnt the same anyways.


var/turf/T = get_turf(H)
var/datum/gas_mixture/air = T.return_air()
var/list/cached_gases = air.gases

ASSERT_GAS(/datum/gas/miasma, air)
cached_gases[/datum/gas/miasma][MOLES] += MIASMA_HYGIENE_MOLES
T.air_update_turf()

#undef MINOR_INSANITY_PEN
#undef MAJOR_INSANITY_PEN
9 changes: 5 additions & 4 deletions code/datums/mood_events/generic_negative_events.dm
Expand Up @@ -137,11 +137,12 @@
mood_change = -5
timeout = 600

//These are unused so far but I want to remember them to use them later
/datum/mood_event/cloned_corpse
description = "<span class='boldwarning'>I recently saw my own corpse...</span>\n"
mood_change = -6
/datum/mood_event/idiot_shower
description = "<span class='warning'>I showered with my clothes on, I'm a fucking idiot.</span>\n"
mood_change = -3
timeout = 900

//These are unused so far but I want to remember them to use them later
/datum/mood_event/surgery
description = "<span class='boldwarning'>HE'S CUTTING ME OPEN!!</span>\n"
mood_change = -8
13 changes: 13 additions & 0 deletions code/datums/mood_events/needs_events.dm
Expand Up @@ -53,6 +53,19 @@
description = "<span class='warning'>The stench of rotting carcasses is unbearable!</span>\n"
mood_change = -7

//Hygiene Events
/datum/mood_event/neat
description = "<span class='nicegreen'>I'm so clean, I love it.</span>\n"
mood_change = 3

/datum/mood_event/dirty
description = "<span class='warning'>I smell horrid.</span>\n"
mood_change = -5

/datum/mood_event/happy_neet
description = "<span class='nicegreen'>I smell horrid.</span>\n"
mood_change = 2

//Generic needs events
/datum/mood_event/favorite_food
description = "<span class='nicegreen'>I really enjoyed eating that.</span>\n"
Expand Down
13 changes: 13 additions & 0 deletions code/datums/traits/good.dm
Expand Up @@ -145,3 +145,16 @@
mob_trait = TRAIT_VORACIOUS
gain_text = "<span class='notice'>You feel HONGRY.</span>"
lose_text = "<span class='danger'>You no longer feel HONGRY.</span>"

/datum/quirk/neet
name = "NEET"
desc = "For some reason you qualified for social welfare and you don't really care about your own personal hygiene."
value = 1
mob_trait = TRAIT_NEET
gain_text = "<span class='notice'>You feel useless to society.</span>"
lose_text = "<span class='danger'>You no longer feel useless to society.</span>"

/datum/quirk/neet/on_spawn()
var/mob/living/carbon/human/H = quirk_holder
var/datum/bank_account/D = H.get_bank_account()
D.welfare = TRUE
7 changes: 7 additions & 0 deletions code/datums/traits/neutral.dm
Expand Up @@ -89,6 +89,13 @@
species.liked_food = initial(species.liked_food)
species.disliked_food = initial(species.disliked_food)

/datum/quirk/neat
name = "Neat"
desc = "You really don't like being unhygienic, and will get sad if you are."
mob_trait = TRAIT_NEAT
gain_text = "<span class='notice'>You feel like you have to stay clean.</span>"
lose_text = "<span class='danger'>You no longer feel the need to always be clean.</span>"

/datum/quirk/monochromatic
name = "Monochromacy"
desc = "You suffer from full colorblindness, and perceive nearly the entire world in blacks and whites."
Expand Down
9 changes: 7 additions & 2 deletions code/game/objects/items/clown_items.dm
Expand Up @@ -102,8 +102,13 @@

else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
var/mob/living/carbon/human/H = user
user.visible_message("<span class='warning'>\the [user] washes \the [target]'s mouth out with [src.name]!</span>", "<span class='notice'>You wash \the [target]'s mouth out with [src.name]!</span>") //washes mouth out with soap sounds better than 'the soap' here
H.lip_style = null //removes lipstick
if(user.zone_selected == "mouth")
user.visible_message("<span class='warning'>\the [user] washes \the [target]'s mouth out with [src.name]!</span>", "<span class='notice'>You wash \the [target]'s mouth out with [src.name]!</span>") //washes mouth out with soap sounds better than 'the soap' here
H.lip_style = null //removes lipstick
H.adjust_hygiene(5) //it kinda works i guess
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So all I need to do to stay clean is just wash my mouth out with soap, 20 times?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you are that autistic, sure.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E獭A蜐蜌蜄苔滩蛿蜌蛪T 獭瘫蛵蛥虦苔蜋T蜔蜁H蛵E袒滩虧坦蜌 蜖S蜐蛥虠O坦苔坛虧蛪蛥A台太P蜔坍瘫虧酞蛽虪虩 CON潭胎虠蜁S泰UM坦蛪號E汀 S蛷态蜋虩蜋虧虡虦O虨A态蛨P i蜑胎虧虣蜄汰踏踏n虩蹋s虝蛥虣蜄滩酞e袒r态蛪t虡态苔毯蛨虦 S蜏蛶虪坛瘫O蜐虧摊毯蛪贪虠坦A态瘫虨P虩蜁蛥虧 C台踏虦L虧蹋袒瘫E蛵虦踏虪贪A蛥蜌贪坍踏虧踏N滩胎蜄S蜏坛蜄虩I蛷N袒滩G虦袒毯 PR蜑蛶O虩毯酞蛶D蜑蛶U蜖C檀蛵坛虡T蛧摊蜁坦蜋虧毯S虝蛽

else
user.visible_message("<span class='warning'>\the [user] washes \the [target] with [src.name]!</span>", "<span class='notice'>You wash \the [target] with [src.name]!</span>")
H.adjust_hygiene(20)
H.update_body()
decreaseUses(user)
return
Expand Down
19 changes: 18 additions & 1 deletion code/game/objects/structures/watercloset.dm
Expand Up @@ -249,6 +249,10 @@
if(isliving(G))
var/mob/living/L = G
wash_mob(L)
if(ishuman(L))
var/mob/living/carbon/human/H = L
if((H.wear_suit && !(H.wear_suit.clothing_flags & SHOWEROKAY))|| (H.w_uniform && !(H.w_uniform.clothing_flags & SHOWEROKAY)) || (H.shoes && !(H.shoes.clothing_flags & SHOWEROKAY)) || (H.ears && !(H.ears.clothing_flags & SHOWEROKAY)) || (H.gloves && !(H.gloves.clothing_flags & SHOWEROKAY)) || (H.wear_mask && !(H.wear_mask.clothing_flags & SHOWEROKAY)) || (H.head && !(H.head.clothing_flags & SHOWEROKAY)))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay what the fuck is this shit, make it readable

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

its just repeated for each type of clothing how can i make it more readable

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

result &= H.wear_suit && !(H.wear_suit.clothing_flags & SHOWEROKAY)
result &= H.blah blah
if(result)
   stupid message

THEN IF YOU THINK ABOUT IT, YOU CAN TURN IT INTO A PROC SO YOU DON'T COPYPASTE THE SAME CODE THREE TIMES

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

馃ぃ

to_chat(H, "<span class='warning'>You step into the shower with your clothes on and feel like an idiot.</span>")
else if(isobj(G)) // Skip the light objects
wash_obj(G)
else
Expand Down Expand Up @@ -313,6 +317,10 @@
if(wash_mob(L)) //it's a carbon mob.
var/mob/living/carbon/C = L
C.slip(80,null,NO_SLIP_WHEN_WALKING)
if(ishuman(C))
var/mob/living/carbon/human/H = C
if((H.wear_suit && !(H.wear_suit.clothing_flags & SHOWEROKAY))|| (H.w_uniform && !(H.w_uniform.clothing_flags & SHOWEROKAY)) || (H.shoes && !(H.shoes.clothing_flags & SHOWEROKAY)) || (H.ears && !(H.ears.clothing_flags & SHOWEROKAY)) || (H.gloves && !(H.gloves.clothing_flags & SHOWEROKAY)) || (H.wear_mask && !(H.wear_mask.clothing_flags & SHOWEROKAY)) || (H.head && !(H.head.clothing_flags & SHOWEROKAY)))
to_chat(H, "<span class='warning'>You step into the shower with your clothes on and feel like an idiot.</span>")
else if(isobj(AM))
wash_obj(AM)

Expand Down Expand Up @@ -342,7 +350,6 @@
L.ExtinguishMob()
L.adjust_fire_stacks(-20) //Douse ourselves with water to avoid fire more easily
L.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower)
if(iscarbon(L))
var/mob/living/carbon/M = L
. = TRUE
Expand Down Expand Up @@ -385,6 +392,12 @@
else if(H.w_uniform && wash_obj(H.w_uniform))
H.update_inv_w_uniform()

if((H.wear_suit && !(H.wear_suit.clothing_flags & SHOWEROKAY))|| (H.w_uniform && !(H.w_uniform.clothing_flags & SHOWEROKAY)) || (H.shoes && !(H.shoes.clothing_flags & SHOWEROKAY)) || (H.ears && !(H.ears.clothing_flags & SHOWEROKAY)) || (H.gloves && !(H.gloves.clothing_flags & SHOWEROKAY)) || (H.wear_mask && !(H.wear_mask.clothing_flags & SHOWEROKAY)) || (H.head && !(H.head.clothing_flags & SHOWEROKAY)))
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "badshower", /datum/mood_event/idiot_shower)
else
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower)
M.set_hygiene(HYGIENE_LEVEL_CLEAN)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make showering with clothes clean you too (like in real life I think), bad mood is already a fair enough punishment


if(washgloves)
SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)

Expand All @@ -396,8 +409,10 @@
H.update_inv_belt()
else
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower)
else
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower)

/obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing)
var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive)
Expand Down Expand Up @@ -493,9 +508,11 @@
H.lip_color = initial(H.lip_color)
H.wash_cream()
H.regenerate_icons()
user.adjust_hygiene(10)
user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep
else
SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
user.adjust_hygiene(20)

/obj/structure/sink/attackby(obj/item/O, mob/living/user, params)
if(busy)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/clothing/suits/utility.dm
Expand Up @@ -120,7 +120,7 @@
name = "radiation hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
clothing_flags = THICKMATERIAL
clothing_flags = THICKMATERIAL|SHOWEROKAY
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
strip_delay = 60
Expand All @@ -137,7 +137,7 @@
w_class = WEIGHT_CLASS_BULKY
gas_transfer_coefficient = 0.9
permeability_coefficient = 0.5
clothing_flags = THICKMATERIAL
clothing_flags = THICKMATERIAL|SHOWEROKAY
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/geiger_counter)
slowdown = 1.5
Expand Down
20 changes: 16 additions & 4 deletions code/modules/economy/account.dm
Expand Up @@ -5,6 +5,7 @@
var/list/bank_cards = list()
var/add_to_accounts = TRUE
var/account_id
var/welfare = FALSE

/datum/bank_account/New(newname, job)
if(add_to_accounts)
Expand Down Expand Up @@ -42,14 +43,25 @@
/datum/bank_account/proc/payday(amt_of_paychecks, free = FALSE)
if(free)
adjust_money(account_job.paycheck * amt_of_paychecks)
if(welfare)
adjust_money(PAYCHECK_WELFARE * amt_of_paychecks)
else
var/datum/bank_account/D = SSeconomy.get_dep_account(account_job.paycheck_department)
if(D)
if(!transfer_money(D, account_job.paycheck * amt_of_paychecks))
bank_card_talk("ERROR: Payday aborted, departmental funds insufficient.")
return FALSE
if(!welfare)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NO, do a total adjustment calculation ONCE and apply it everywhere

what the fuck is this garbage, you know better

if(!transfer_money(D, account_job.paycheck * amt_of_paychecks))
bank_card_talk("ERROR: Payday aborted, departmental funds insufficient.")
return FALSE
else
bank_card_talk("Payday processed, account now holds $[account_balance].")

else
bank_card_talk("Payday processed, account now holds $[account_balance].")
if(!transfer_money(D, account_job.paycheck * amt_of_paychecks + PAYCHECK_WELFARE * amt_of_paychecks))
bank_card_talk("ERROR: Payday aborted, departmental funds insufficient.")
return FALSE
else
bank_card_talk("Payday processed, account now holds $[account_balance]. $[PAYCHECK_WELFARE] extra was received as social welfare.")

return TRUE
bank_card_talk("ERROR: Payday aborted, unable to contact departmental account.")
return FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/carbon_defense.dm
Expand Up @@ -93,7 +93,7 @@
add_splatter_floor(location)
if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood
user.add_mob_blood(src)

user.adjust_hygiene(-10)
if(affecting.body_zone == BODY_ZONE_HEAD)
if(wear_mask)
wear_mask.add_mob_blood(src)
Expand Down