mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 14:39:58 +01:00
@@ -311,4 +311,3 @@ GLOBAL_LIST_INIT(pipe_paint_colors, list(
|
||||
|
||||
#define MIASMA_CORPSE_MOLES 0.02
|
||||
#define MIASMA_GIBS_MOLES 0.005
|
||||
#define MIASMA_HYGIENE_MOLES 0.002
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
#define PAYCHECK_HARD 40
|
||||
#define PAYCHECK_COMMAND 100
|
||||
|
||||
#define PAYCHECK_WELFARE 5 //NEETbucks
|
||||
|
||||
#define MAX_GRANT_CIV 2500
|
||||
#define MAX_GRANT_ENG 3000
|
||||
#define MAX_GRANT_SCI 5000
|
||||
|
||||
+27
-28
@@ -11,36 +11,35 @@
|
||||
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#define MUTATIONS_LAYER 29 //mutations. Tk headglows, cold resistance glow, etc
|
||||
#define BODY_BEHIND_LAYER 28 //certain mutantrace features (tail when looking south) that must appear behind the body parts
|
||||
#define BODYPARTS_LAYER 27 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
|
||||
#define BODY_ADJ_LAYER 26 //certain mutantrace features (snout, body markings) that must appear above the body parts
|
||||
#define BODY_LAYER 25 //underwear, undershirts, socks, eyes, lips(makeup)
|
||||
#define FRONT_MUTATIONS_LAYER 24 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
|
||||
#define DAMAGE_LAYER 23 //damage indicators (cuts and burns)
|
||||
#define UNIFORM_LAYER 22
|
||||
#define ID_LAYER 21 //lmao at the idiot who put both ids and hands on the same layer
|
||||
#define HANDS_PART_LAYER 20
|
||||
#define GLOVES_LAYER 19
|
||||
#define SHOES_LAYER 18
|
||||
#define EARS_LAYER 17
|
||||
#define SUIT_LAYER 16
|
||||
#define GLASSES_LAYER 15
|
||||
#define BELT_LAYER 14 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 13
|
||||
#define NECK_LAYER 12
|
||||
#define BACK_LAYER 11
|
||||
#define HAIR_LAYER 10 //TODO: make part of head layer?
|
||||
#define FACEMASK_LAYER 9
|
||||
#define HEAD_LAYER 8
|
||||
#define HANDCUFF_LAYER 7
|
||||
#define LEGCUFF_LAYER 6
|
||||
#define HANDS_LAYER 5
|
||||
#define BODY_FRONT_LAYER 4
|
||||
#define SMELL_LAYER 3
|
||||
#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 HALO_LAYER 2 //blood cult ascended halo, because there's currently no better solution for adding/removing
|
||||
#define FIRE_LAYER 1 //If you're on fire
|
||||
#define TOTAL_LAYERS 29 //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"
|
||||
|
||||
@@ -146,11 +146,6 @@
|
||||
#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
|
||||
@@ -268,7 +263,6 @@
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -38,5 +38,4 @@
|
||||
#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 VOICEBOX_TOGGLABLE (1<<6) // The voicebox in this clothing can be toggled.
|
||||
#define VOICEBOX_DISABLED (1<<7) // The voicebox is currently turned off.
|
||||
#define SHOWEROKAY (1<<8) //prevents you from being stupid if you shower in them
|
||||
#define SCAN_REAGENTS (1<<9) // Allows helmets and glasses to scan reagents.
|
||||
|
||||
@@ -159,8 +159,6 @@
|
||||
#define TRAIT_SKITTISH "skittish"
|
||||
#define TRAIT_POOR_AIM "poor_aim"
|
||||
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
|
||||
#define TRAIT_NEET "NEET"
|
||||
#define TRAIT_NEAT "neat"
|
||||
#define TRAIT_DRUNK_HEALING "drunk_healing"
|
||||
#define TRAIT_TAGGER "tagger"
|
||||
#define TRAIT_PHOTOGRAPHER "photographer"
|
||||
|
||||
@@ -143,7 +143,6 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"THICKMATERIAL" = THICKMATERIAL,
|
||||
"VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE,
|
||||
"VOICEBOX_DISABLED" = VOICEBOX_DISABLED,
|
||||
"SHOWEROKAY" = SHOWEROKAY,
|
||||
"SCAN_REAGENTS" = SCAN_REAGENTS,
|
||||
),
|
||||
"tesla_flags" = list(
|
||||
|
||||
@@ -110,9 +110,6 @@
|
||||
add_splatter_floor(location)
|
||||
if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood
|
||||
user.add_mob_blood(src)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/dirtyboy = user
|
||||
dirtyboy.adjust_hygiene(-10)
|
||||
return TRUE //successful attack
|
||||
|
||||
/mob/living/simple_animal/attacked_by(obj/item/I, mob/living/user)
|
||||
|
||||
@@ -17,7 +17,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
|
||||
if(!quirks.len)
|
||||
SetupQuirks()
|
||||
|
||||
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic","Hypersensitive"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Light Drinker"),list(list("Neat","NEET")))
|
||||
quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic","Hypersensitive"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Light Drinker"))
|
||||
return ..()
|
||||
|
||||
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
|
||||
|
||||
@@ -193,7 +193,6 @@
|
||||
setSanity(sanity+0.6, maximum=INFINITY)
|
||||
|
||||
HandleNutrition(owner)
|
||||
HandleHygiene(owner)
|
||||
|
||||
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_GREAT)
|
||||
var/mob/living/owner = parent
|
||||
@@ -351,27 +350,6 @@
|
||||
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)
|
||||
if(H.hygiene <= HYGIENE_LEVEL_DIRTY)
|
||||
HygieneMiasma(H)
|
||||
|
||||
/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
|
||||
|
||||
var/turf/T = get_turf(H)
|
||||
|
||||
if(!istype(T) || T.return_air().return_pressure() > (WARNING_HIGH_PRESSURE - 10))
|
||||
return
|
||||
|
||||
var/datum/gas_mixture/stank = new
|
||||
ADD_GAS(/datum/gas/miasma, stank.gases)
|
||||
stank.gases[/datum/gas/miasma][MOLES] = MIASMA_HYGIENE_MOLES
|
||||
stank.temperature = BODYTEMP_NORMAL
|
||||
T.assume_air(stank)
|
||||
T.air_update_turf()
|
||||
|
||||
/datum/component/mood/proc/check_area_mood(datum/source, var/area/A)
|
||||
if(A.mood_bonus)
|
||||
var/datum/mood_event/M = add_event(null, "area", /datum/mood_event/area)
|
||||
|
||||
@@ -53,19 +53,6 @@
|
||||
description = "<span class='warning'>The stench of rotting carcasses is unbearable!</span>\n"
|
||||
mood_change = -12
|
||||
|
||||
//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"
|
||||
|
||||
@@ -22,24 +22,10 @@
|
||||
synchronizer_coeff = 1
|
||||
var/reek = 200
|
||||
|
||||
/datum/mutation/human/olfaction/on_life()
|
||||
var/hygiene_now = owner.hygiene
|
||||
|
||||
if(hygiene_now < 100 && prob(5))
|
||||
owner.adjust_disgust(GET_MUTATION_SYNCHRONIZER(src) * (rand(3,5)))
|
||||
if(hygiene_now < HYGIENE_LEVEL_DIRTY && prob(50))
|
||||
to_chat(owner,"<span class='danger'>You get a whiff of your stench and feel sick!</span>")
|
||||
owner.adjust_disgust(GET_MUTATION_SYNCHRONIZER(src) * rand(5,10))
|
||||
|
||||
if(hygiene_now < HYGIENE_LEVEL_NORMAL && reek >= HYGIENE_LEVEL_NORMAL)
|
||||
to_chat(owner,"<span class='warning'>Your inhumanly strong nose picks up a faint odor. Maybe you should shower soon.</span>")
|
||||
if(hygiene_now < 150 && reek >= 150)
|
||||
to_chat(owner,"<span class='warning'>Your odor is getting bad, what with you having a super-nose and all.</span>")
|
||||
if(hygiene_now < 100 && reek >= 100)
|
||||
to_chat(owner,"<span class='danger'>Your odor begins to make you gag. You silently curse your godly nose. You should really get clean!</span>")
|
||||
if(hygiene_now < HYGIENE_LEVEL_DIRTY && reek >= HYGIENE_LEVEL_DIRTY)
|
||||
to_chat(owner,"<span class='userdanger'>Your super-nose is 100% fed up with your stench. You absolutely must get clean.</span>")
|
||||
reek = hygiene_now
|
||||
/datum/mutation/human/olfaction/modify()
|
||||
if(power)
|
||||
var/obj/effect/proc_holder/spell/targeted/olfaction/S = power
|
||||
S.sensitivity = GET_MUTATION_SYNCHRONIZER(src)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/olfaction
|
||||
name = "Remember the Scent"
|
||||
@@ -51,8 +37,18 @@
|
||||
action_icon_state = "nose"
|
||||
var/mob/living/carbon/tracking_target
|
||||
var/list/mob/living/carbon/possible = list()
|
||||
var/sensitivity = 1
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/olfaction/cast(list/targets, mob/living/user = usr)
|
||||
//can we sniff? is there miasma in the air?
|
||||
var/datum/gas_mixture/air = user.loc.return_air()
|
||||
var/list/cached_gases = air.gases
|
||||
|
||||
if(cached_gases[/datum/gas/miasma])
|
||||
user.adjust_disgust(sensitivity * 45)
|
||||
to_chat(user, "<span class='warning'>With your overly sensitive nose, you get a whiff of stench and feel sick! Try moving to a cleaner area!</span>")
|
||||
return
|
||||
|
||||
var/atom/sniffed = user.get_active_held_item()
|
||||
if(sniffed)
|
||||
var/old_target = tracking_target
|
||||
|
||||
@@ -187,28 +187,3 @@
|
||||
mob_trait = TRAIT_VORACIOUS
|
||||
gain_text = "<span class='notice'>You feel HONGRY.</span>"
|
||||
lose_text = "<span class='danger'>You no longer feel HONGRY.</span>"
|
||||
medical_record_text = "Patient demonstrates a disturbing capacity for eating."
|
||||
|
||||
/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>"
|
||||
mood_quirk = TRUE
|
||||
medical_record_text = "Patient continues to qualify for welfare and has made no efforts to improve hygiene."
|
||||
|
||||
/datum/quirk/neet/on_spawn()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
var/datum/bank_account/D = H.get_bank_account()
|
||||
if(!D) //if their current mob doesn't have a bank account, likely due to them being a special role (ie nuke op)
|
||||
return
|
||||
D.welfare = TRUE
|
||||
|
||||
/datum/quirk/neet/on_process()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
if (H.hygiene <= HYGIENE_LEVEL_DIRTY)
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "NEET", /datum/mood_event/happy_neet)
|
||||
else
|
||||
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "NEET")
|
||||
|
||||
@@ -93,25 +93,6 @@
|
||||
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>"
|
||||
mood_quirk = TRUE
|
||||
medical_record_text = "While waiting for the exam to begin, patient cleaned the examination room."
|
||||
|
||||
/datum/quirk/neat/on_process()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
switch (H.hygiene)
|
||||
if(0 to HYGIENE_LEVEL_DIRTY)
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "neat", /datum/mood_event/dirty)
|
||||
if(HYGIENE_LEVEL_DIRTY to HYGIENE_LEVEL_NORMAL)
|
||||
SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "neat")
|
||||
if(HYGIENE_LEVEL_NORMAL to HYGIENE_LEVEL_CLEAN)
|
||||
SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "neat", /datum/mood_event/neat)
|
||||
|
||||
/datum/quirk/monochromatic
|
||||
name = "Monochromacy"
|
||||
desc = "You suffer from full colorblindness, and perceive nearly the entire world in blacks and whites."
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#define SCANGATE_GUNS "Guns"
|
||||
#define SCANGATE_WANTED "Wanted"
|
||||
#define SCANGATE_SPECIES "Species"
|
||||
#define SCANGATE_HYGIENE "Hygiene"
|
||||
#define SCANGATE_NUTRITION "Nutrition"
|
||||
|
||||
/obj/machinery/scanner_gate
|
||||
@@ -25,7 +24,6 @@
|
||||
var/nanite_cloud = 0
|
||||
var/datum/species/detect_species = /datum/species/human
|
||||
var/reverse = FALSE //If true, signals if the scan returns false
|
||||
var/detect_hygiene = HYGIENE_LEVEL_DIRTY
|
||||
var/detect_nutrition = NUTRITION_LEVEL_FAT
|
||||
|
||||
/obj/machinery/scanner_gate/Initialize()
|
||||
@@ -118,13 +116,6 @@
|
||||
if(istype(I, /obj/item/gun))
|
||||
beep = TRUE
|
||||
break
|
||||
if(SCANGATE_HYGIENE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.hygiene >= detect_hygiene && detect_hygiene == HYGIENE_LEVEL_CLEAN)
|
||||
beep = TRUE
|
||||
if(H.hygiene <= detect_hygiene && detect_hygiene == HYGIENE_LEVEL_DIRTY)
|
||||
beep = TRUE
|
||||
if(SCANGATE_NUTRITION)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -166,7 +157,6 @@
|
||||
data["nanite_cloud"] = nanite_cloud
|
||||
data["disease_threshold"] = disease_threshold
|
||||
data["target_species"] = initial(detect_species.name)
|
||||
data["target_hygiene"] = detect_hygiene
|
||||
data["target_nutrition"] = detect_nutrition
|
||||
return data
|
||||
|
||||
@@ -182,7 +172,6 @@
|
||||
SCANGATE_GUNS,
|
||||
SCANGATE_WANTED,
|
||||
SCANGATE_SPECIES,
|
||||
SCANGATE_HYGIENE,
|
||||
SCANGATE_NUTRITION)
|
||||
if(new_mode)
|
||||
scangate_mode = new_mode
|
||||
@@ -238,16 +227,6 @@
|
||||
if("Zombie")
|
||||
detect_species = /datum/species/zombie
|
||||
. = TRUE
|
||||
if("set_target_hygiene")
|
||||
var/new_hygiene = input("Set target hygiene level","Scan Mode") as null|anything in list("Clean",
|
||||
"Filthy")
|
||||
if(new_hygiene)
|
||||
switch(new_hygiene)
|
||||
if("Clean")
|
||||
detect_hygiene = HYGIENE_LEVEL_CLEAN
|
||||
if("Filthy")
|
||||
detect_hygiene = HYGIENE_LEVEL_DIRTY
|
||||
. = TRUE
|
||||
if("set_target_nutrition")
|
||||
var/new_nutrition = input("Set target nutrition level","Scan Mode") as null|anything in list("Starving",
|
||||
"Obese")
|
||||
@@ -266,5 +245,4 @@
|
||||
#undef SCANGATE_GUNS
|
||||
#undef SCANGATE_WANTED
|
||||
#undef SCANGATE_SPECIES
|
||||
#undef SCANGATE_HYGIENE
|
||||
#undef SCANGATE_NUTRITION
|
||||
|
||||
@@ -102,13 +102,8 @@
|
||||
|
||||
else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH)
|
||||
var/mob/living/carbon/human/H = user
|
||||
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
|
||||
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)
|
||||
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 if(user.zone_selected == "mouth")
|
||||
H.lip_style = null //removes lipstick
|
||||
H.update_body()
|
||||
decreaseUses(user)
|
||||
return
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
|
||||
L.wash_cream()
|
||||
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
|
||||
@@ -164,12 +165,6 @@
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(check_clothes(L))
|
||||
if(H.hygiene <= 75)
|
||||
to_chat(H, "<span class='warning'>You have to remove your clothes to get clean!</span>")
|
||||
else
|
||||
H.set_hygiene(HYGIENE_LEVEL_CLEAN)
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "shower", /datum/mood_event/nice_shower)
|
||||
|
||||
if(H.wear_suit && wash_obj(H.wear_suit))
|
||||
H.update_inv_wear_suit()
|
||||
@@ -187,10 +182,8 @@
|
||||
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/thing)
|
||||
var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive)
|
||||
@@ -227,23 +220,6 @@
|
||||
L.adjustFireLoss(5)
|
||||
to_chat(L, "<span class='danger'>[src] is searing!</span>")
|
||||
|
||||
/obj/machinery/shower/proc/check_clothes(mob/living/carbon/human/H)
|
||||
if(H.wear_suit && (H.wear_suit.clothing_flags & SHOWEROKAY))
|
||||
// Do not check underclothing if the over-suit is suitable.
|
||||
// This stops people feeling dumb if they're showering
|
||||
// with a radiation suit on.
|
||||
return FALSE
|
||||
|
||||
. = FALSE
|
||||
if(H.wear_suit && !(H.wear_suit.clothing_flags & SHOWEROKAY))
|
||||
. = TRUE
|
||||
else if(H.w_uniform && !(H.w_uniform.clothing_flags & SHOWEROKAY))
|
||||
. = TRUE
|
||||
else if(H.wear_mask && !(H.wear_mask.clothing_flags & SHOWEROKAY))
|
||||
. = TRUE
|
||||
else if(H.head && !(H.head.clothing_flags & SHOWEROKAY))
|
||||
. = TRUE
|
||||
|
||||
|
||||
/obj/effect/mist
|
||||
name = "mist"
|
||||
|
||||
@@ -261,13 +261,9 @@
|
||||
H.lip_color = initial(H.lip_color)
|
||||
H.wash_cream()
|
||||
H.regenerate_icons()
|
||||
H.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)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/dirtyboy = user
|
||||
dirtyboy.adjust_hygiene(10)
|
||||
|
||||
/obj/structure/sink/attackby(obj/item/O, mob/living/user, params)
|
||||
if(busy)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||
// where you would want the updater procs below to run
|
||||
#define SAVEFILE_VERSION_MAX 22
|
||||
#define SAVEFILE_VERSION_MAX 23
|
||||
|
||||
/*
|
||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||
@@ -104,6 +104,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
new_value = JP_LOW
|
||||
if(new_value)
|
||||
job_preferences[initial(J.title)] = new_value
|
||||
if(current_version < 23)
|
||||
all_quirks -= "Physically Obstructive"
|
||||
all_quirks -= "Neat"
|
||||
all_quirks -= "NEET"
|
||||
|
||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||
if(!ckey)
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
|
||||
clothing_flags = MASKINTERNALS | SHOWEROKAY
|
||||
clothing_flags = MASKINTERNALS
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
@@ -84,7 +84,7 @@
|
||||
/obj/item/clothing/mask/gas/sexyclown
|
||||
name = "sexy-clown wig and mask"
|
||||
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
|
||||
clothing_flags = MASKINTERNALS | SHOWEROKAY
|
||||
clothing_flags = MASKINTERNALS
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
@@ -93,7 +93,7 @@
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
desc = "The traditional mime's mask. It has an eerie facial posture."
|
||||
clothing_flags = MASKINTERNALS | SHOWEROKAY
|
||||
clothing_flags = MASKINTERNALS
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
@@ -134,7 +134,7 @@
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
desc = "A traditional female mime's mask."
|
||||
clothing_flags = MASKINTERNALS | SHOWEROKAY
|
||||
clothing_flags = MASKINTERNALS
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
/obj/item/clothing/mask/fakemoustache/italian
|
||||
name = "italian moustache"
|
||||
desc = "Made from authentic Italian moustache hairs. Gives the wearer an irresistable urge to gesticulate wildly."
|
||||
clothing_flags = SHOWEROKAY
|
||||
modifies_speech = TRUE
|
||||
|
||||
/obj/item/clothing/mask/fakemoustache/italian/handle_speech(datum/source, list/speech_args)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "space helmet"
|
||||
icon_state = "spaceold"
|
||||
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SHOWEROKAY
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL
|
||||
item_state = "spaceold"
|
||||
permeability_coefficient = 0.01
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
|
||||
@@ -30,7 +30,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SHOWEROKAY
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
|
||||
slowdown = 1
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
item_color = "medical"
|
||||
flash_protect = 0
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SHOWEROKAY | SCAN_REAGENTS
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SCAN_REAGENTS
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/medical
|
||||
icon_state = "hardsuit-medical"
|
||||
@@ -457,7 +457,7 @@
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
|
||||
var/obj/machinery/doppler_array/integrated/bomb_radar
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SHOWEROKAY | SCAN_REAGENTS
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SCAN_REAGENTS
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/rd/Initialize()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "bio"
|
||||
desc = "A hood that protects the head and face from biological contaminants."
|
||||
permeability_coefficient = 0.01
|
||||
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SHOWEROKAY
|
||||
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
|
||||
resistance_flags = ACID_PROOF
|
||||
@@ -18,7 +18,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
clothing_flags = THICKMATERIAL | SHOWEROKAY
|
||||
clothing_flags = THICKMATERIAL
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pen, /obj/item/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray)
|
||||
|
||||
@@ -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|SHOWEROKAY
|
||||
clothing_flags = THICKMATERIAL
|
||||
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
|
||||
@@ -137,7 +137,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
gas_transfer_coefficient = 0.9
|
||||
permeability_coefficient = 0.5
|
||||
clothing_flags = THICKMATERIAL|SHOWEROKAY
|
||||
clothing_flags = THICKMATERIAL
|
||||
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
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
var/list/bank_cards = list()
|
||||
var/add_to_accounts = TRUE
|
||||
var/account_id
|
||||
var/welfare = FALSE
|
||||
var/being_dumped = FALSE //pink levels are rising
|
||||
var/withdrawDelay = 0
|
||||
|
||||
@@ -50,8 +49,6 @@
|
||||
|
||||
/datum/bank_account/proc/payday(amt_of_paychecks, free = FALSE)
|
||||
var/money_to_transfer = account_job.paycheck * amt_of_paychecks
|
||||
if(welfare)
|
||||
money_to_transfer += PAYCHECK_WELFARE
|
||||
if(free)
|
||||
adjust_money(money_to_transfer)
|
||||
else
|
||||
|
||||
@@ -82,9 +82,6 @@
|
||||
add_splatter_floor(location)
|
||||
if(get_dist(user, src) <= 1) //people with TK won't get smeared with blood
|
||||
user.add_mob_blood(src)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/dirtyboy = user
|
||||
dirtyboy.adjust_hygiene(-10)
|
||||
if(affecting.body_zone == BODY_ZONE_HEAD)
|
||||
if(wear_mask)
|
||||
wear_mask.add_mob_blood(src)
|
||||
|
||||
@@ -775,7 +775,6 @@
|
||||
remove_all_embedded_objects()
|
||||
set_heartattack(FALSE)
|
||||
drunkenness = 0
|
||||
set_hygiene(HYGIENE_LEVEL_NORMAL)
|
||||
for(var/datum/mutation/human/HM in dna.mutations)
|
||||
if(HM.quality != POSITIVE)
|
||||
dna.remove_mutation(HM.name)
|
||||
|
||||
@@ -39,8 +39,6 @@
|
||||
var/obj/item/l_store = null
|
||||
var/obj/item/s_store = null
|
||||
|
||||
var/hygiene = HYGIENE_LEVEL_NORMAL
|
||||
|
||||
var/special_voice = "" // For changing our voice. Used by a symptom.
|
||||
|
||||
var/bleed_rate = 0 //how much are we bleeding
|
||||
|
||||
@@ -42,9 +42,6 @@
|
||||
//Stuff jammed in your limbs hurts
|
||||
handle_embedded_objects()
|
||||
|
||||
if(stat != DEAD)
|
||||
handle_hygiene()
|
||||
|
||||
dna.species.spec_life(src) // for mutantraces
|
||||
|
||||
//Update our name based on whether our face is obscured/disfigured
|
||||
@@ -324,37 +321,6 @@
|
||||
// Tissues die without blood circulation
|
||||
adjustBruteLoss(2)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_hygiene()
|
||||
if(HAS_TRAIT(src, TRAIT_ALWAYS_CLEAN))
|
||||
set_hygiene(HYGIENE_LEVEL_CLEAN)
|
||||
return
|
||||
|
||||
var/hygiene_loss = -HYGIENE_FACTOR * 0.25 //Small loss per life
|
||||
|
||||
//If you're covered in blood, you'll start smelling like shit faster.
|
||||
var/obj/item/head = get_item_by_slot(SLOT_HEAD)
|
||||
if(head && HAS_BLOOD_DNA(head))
|
||||
hygiene_loss -= 1 * HYGIENE_FACTOR
|
||||
|
||||
var/obj/item/mask = get_item_by_slot(SLOT_HEAD)
|
||||
if(mask && HAS_BLOOD_DNA(mask))
|
||||
hygiene_loss -= 1 * HYGIENE_FACTOR
|
||||
|
||||
var/obj/item/uniform = get_item_by_slot(SLOT_W_UNIFORM)
|
||||
if(uniform && HAS_BLOOD_DNA(uniform))
|
||||
hygiene_loss -= 4 * HYGIENE_FACTOR
|
||||
|
||||
var/obj/item/suit = get_item_by_slot(SLOT_WEAR_SUIT)
|
||||
if(suit && HAS_BLOOD_DNA(suit))
|
||||
hygiene_loss -= 3 * HYGIENE_FACTOR
|
||||
|
||||
var/obj/item/feet = get_item_by_slot(SLOT_SHOES)
|
||||
if(feet && HAS_BLOOD_DNA(feet))
|
||||
hygiene_loss -= 0.5 * HYGIENE_FACTOR
|
||||
|
||||
adjust_hygiene(hygiene_loss)
|
||||
|
||||
|
||||
#undef THERMAL_PROTECTION_HEAD
|
||||
#undef THERMAL_PROTECTION_CHEST
|
||||
#undef THERMAL_PROTECTION_GROIN
|
||||
|
||||
@@ -1432,9 +1432,6 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
H.add_splatter_floor(location)
|
||||
if(get_dist(user, H) <= 1) //people with TK won't get smeared with blood
|
||||
user.add_mob_blood(H)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/dirtyboy = user
|
||||
dirtyboy.adjust_hygiene(-10)
|
||||
|
||||
switch(hit_area)
|
||||
if(BODY_ZONE_HEAD)
|
||||
|
||||
@@ -50,12 +50,4 @@
|
||||
if(druggy)
|
||||
grant_language(/datum/language/beachbum)
|
||||
else
|
||||
remove_language(/datum/language/beachbum)
|
||||
|
||||
/mob/living/carbon/human/proc/adjust_hygiene(amount)
|
||||
hygiene = CLAMP(hygiene+amount, 0, HYGIENE_LEVEL_CLEAN)
|
||||
update_smell()
|
||||
|
||||
/mob/living/carbon/human/proc/set_hygiene(amount)
|
||||
hygiene = CLAMP(amount, 0, HYGIENE_LEVEL_CLEAN)
|
||||
update_smell()
|
||||
remove_language(/datum/language/beachbum)
|
||||
@@ -479,14 +479,6 @@ There are several things that need to be remembered:
|
||||
client.screen += I
|
||||
update_observer_view(I)
|
||||
|
||||
//Update whether we smell
|
||||
/mob/living/carbon/human/proc/update_smell(var/smelly_icon = "generic_mob_smell")
|
||||
remove_overlay(SMELL_LAYER)
|
||||
if(hygiene <= HYGIENE_LEVEL_DIRTY)
|
||||
var/mutable_appearance/new_smell_overlay = mutable_appearance('icons/mob/smelly.dmi', smelly_icon, -SMELL_LAYER)
|
||||
overlays_standing[SMELL_LAYER] = new_smell_overlay
|
||||
apply_overlay(SMELL_LAYER)
|
||||
|
||||
/*
|
||||
Does everything in relation to building the /mutable_appearance used in the mob's overlays list
|
||||
covers:
|
||||
|
||||
@@ -415,8 +415,6 @@
|
||||
if(prob(20)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
|
||||
H.heal_bodypart_damage(1,1, 0)
|
||||
. = 1
|
||||
else //chefs' robust space-Italian metabolism lets them eat garlic without producing allyl methyl sulfide
|
||||
H.adjust_hygiene(-0.15 * volume)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/sprinkles
|
||||
|
||||
@@ -956,7 +956,6 @@
|
||||
var/mob/living/carbon/C = M
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.adjust_hygiene((30 * reac_volume) / (3 + reac_volume))
|
||||
if(H.lip_style)
|
||||
H.lip_style = null
|
||||
H.update_body()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 951 B |
Reference in New Issue
Block a user