mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-22 04:37:45 +01:00
Update negative_ch.dm
This commit is contained in:
@@ -2,17 +2,17 @@
|
||||
#define GAUSSIAN_RANDOM(vars...) ((-2*log(rand()))**0.5 * cos(6.28318530718*rand()))
|
||||
#endif
|
||||
|
||||
/datum/trait/hollow
|
||||
/datum/trait/negative/hollow
|
||||
excludes = list(/datum/trait/densebones)
|
||||
|
||||
/datum/trait/slipperydirt
|
||||
/datum/trait/negative/slipperydirt
|
||||
name = "Dirt Vulnerability"
|
||||
desc = "Even the tiniest particles of dirt give you uneasy footing, even through several layers of footwear."
|
||||
cost = -5
|
||||
var_changes = list("dirtslip" = TRUE)
|
||||
excludes = list(/datum/trait/absorbent)
|
||||
|
||||
/datum/trait/less_blood
|
||||
/datum/trait/negative/less_blood
|
||||
name = "Low blood volume"
|
||||
desc = "You have 33.3% less blood volume compared to most species, making you more prone to blood loss issues."
|
||||
cost = -3
|
||||
@@ -20,7 +20,7 @@
|
||||
excludes = list(/datum/trait/less_blood_extreme,/datum/trait/more_blood,/datum/trait/more_blood_extreme)
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/less_blood_extreme
|
||||
/datum/trait/negative/less_blood_extreme
|
||||
name = "Extremely low blood volume"
|
||||
desc = "You have 60% less blood volume compared to most species, making you much more prone to blood loss issues."
|
||||
cost = -5
|
||||
@@ -28,31 +28,31 @@
|
||||
excludes = list(/datum/trait/less_blood,/datum/trait/more_blood,/datum/trait/more_blood_extreme)
|
||||
can_take = ORGANICS
|
||||
|
||||
/datum/trait/scrawny
|
||||
/datum/trait/negative/scrawny
|
||||
name = "Scrawny"
|
||||
desc = "You have a much harder time breaking free of grabs as well as creating and holding onto grabs on other people."
|
||||
cost = -2
|
||||
var_changes = list("grab_resist_divisor_victims" = 0.5, "grab_resist_divisor_self" = 3, "grab_power_victims" = 1, "grab_power_self" = -1)
|
||||
|
||||
/datum/trait/extreme_slowdown
|
||||
/datum/trait/negative/extreme_slowdown
|
||||
name = "Extreme slowdown"
|
||||
desc = "You move EXTREMELY slower than baseline"
|
||||
cost = -8
|
||||
var_changes = list("slowdown" = 4.0)
|
||||
|
||||
/datum/trait/deep_sleeper
|
||||
/datum/trait/negative/deep_sleeper
|
||||
name = "Deep Sleeper"
|
||||
desc = "When you fall asleep, it takes you four times as long to wake up."
|
||||
cost = -1
|
||||
var_changes = list("waking_speed" = 0.25)
|
||||
|
||||
/datum/trait/low_blood_sugar
|
||||
/datum/trait/negative/low_blood_sugar
|
||||
name = "Low blood sugar"
|
||||
desc = "If you let your nutrition get too low, you will start to experience adverse affects including hallucinations, unconsciousness, and weakness"
|
||||
cost = -1
|
||||
special_env = TRUE
|
||||
|
||||
/datum/trait/low_blood_sugar/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/low_blood_sugar/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
if(H.nutrition > 200) //Sanity check because stupid bugs >:v
|
||||
return
|
||||
if((H.nutrition < 200) && prob(5))
|
||||
@@ -71,16 +71,16 @@
|
||||
if((H.nutrition < 25) && prob(5))
|
||||
H.drowsyness = max(100,H.drowsyness+30)
|
||||
|
||||
/datum/trait/blindness
|
||||
/datum/trait/negative/blindness
|
||||
name = "Permanently blind"
|
||||
desc = "You are blind. For whatever reason, nothing is able to change this fact, not even surgery. WARNING: YOU WILL NOT BE ABLE TO SEE ANY POSTS USING THE ME VERB, ONLY SUBTLE AND DIALOGUE ARE VIEWABLE TO YOU, YOU HAVE BEEN WARNED."
|
||||
cost = -8
|
||||
special_env = TRUE
|
||||
|
||||
/datum/trait/blindness/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/blindness/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
H.sdisabilities |= BLIND //no matter what you do, the blindess still comes for you
|
||||
|
||||
/datum/trait/schizophrenia
|
||||
/datum/trait/negative/schizophrenia
|
||||
name = "Episodic hallucinations."
|
||||
desc = "You have a condition which causes you to spontaneously have hallucinations! Luckily for you, in the modern space age, our doctors have solutions for you, just make sure you don't forget to take your pills."
|
||||
cost = -3
|
||||
@@ -98,12 +98,12 @@
|
||||
var/break_length_meds_dev = 7000
|
||||
var/list/episode = list("in_episode" = FALSE)
|
||||
|
||||
/datum/trait/schizophrenia/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/schizophrenia/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
episode["next_episode_begin"] = world.time + 6000
|
||||
episode["next_episode_end"] = world.time + 9000
|
||||
|
||||
/datum/trait/schizophrenia/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/schizophrenia/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
var/med_vol = get_med_volume(H)
|
||||
if(!episode["in_episode"])
|
||||
if(world.time > episode["next_episode_begin"])
|
||||
@@ -134,7 +134,7 @@
|
||||
episode["next_episode_end"] = world.time + (episode["next_episode_end"] - world.time)/8
|
||||
H.hallucination = min(hallucination_max,H.hallucination + hallucination_increase)
|
||||
|
||||
/datum/trait/schizophrenia/proc/get_med_volume(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/schizophrenia/proc/get_med_volume(var/mob/living/carbon/human/H)
|
||||
var/total_vol = 0
|
||||
for(var/datum/reagent/reagent in H.bloodstr.reagent_list)
|
||||
if(istype(reagent,/datum/reagent/tercozolam))
|
||||
@@ -143,7 +143,7 @@
|
||||
if(istype(reagent,/datum/reagent/tercozolam))
|
||||
total_vol += reagent.volume
|
||||
return total_vol
|
||||
/datum/trait/agoraphobia
|
||||
/datum/trait/negative/agoraphobia
|
||||
name = "Agoraphobia"
|
||||
desc = "You very much dislike being in crowded places. When in the company of more than two other people, you start to panic and experience adverse effects."
|
||||
cost = -3
|
||||
@@ -153,7 +153,7 @@
|
||||
special_env = TRUE
|
||||
excludes = list(/datum/trait/lonely,/datum/trait/lonely/major)
|
||||
|
||||
/datum/trait/agoraphobia/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/agoraphobia/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
spawn(0)
|
||||
var/list/in_range = list()
|
||||
// If they're dead or unconcious they're a bit beyond this kind of thing.
|
||||
@@ -183,7 +183,7 @@
|
||||
H.loneliness_stage = max(H.loneliness_stage-4,0)
|
||||
|
||||
|
||||
/datum/trait/agoraphobia/proc/handle_loneliness(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/agoraphobia/proc/handle_loneliness(var/mob/living/carbon/human/H)
|
||||
var/ms = ""
|
||||
if(H.loneliness_stage == escalation_speed)
|
||||
ms = "You notice there's more people than you feel comfortable with around you..."
|
||||
@@ -201,7 +201,7 @@
|
||||
to_chat(H, ms)
|
||||
H.next_loneliness_time = world.time+500
|
||||
|
||||
/datum/trait/agoraphobia/proc/find_held_by(var/atom/item)
|
||||
/datum/trait/negative/agoraphobia/proc/find_held_by(var/atom/item)
|
||||
if(!item || !istype(item))
|
||||
return null
|
||||
else if(istype(item,/mob/living))
|
||||
@@ -209,7 +209,7 @@
|
||||
else
|
||||
return find_held_by(item.loc)
|
||||
|
||||
/datum/trait/agoraphobia/proc/holder_check(var/mob/living/carbon/human/H,var/obj/item/weapon/holder/H_holder)
|
||||
/datum/trait/negative/agoraphobia/proc/holder_check(var/mob/living/carbon/human/H,var/obj/item/weapon/holder/H_holder)
|
||||
var/list/in_range = list()
|
||||
if(istype(H_holder))
|
||||
var/mob/living/held_by = find_held_by(H_holder)
|
||||
@@ -218,7 +218,7 @@
|
||||
in_range |= holder_check(H,held_by)
|
||||
return in_range
|
||||
|
||||
/datum/trait/agoraphobia/proc/belly_check(var/mob/living/carbon/human/H,var/obj/belly/B)
|
||||
/datum/trait/negative/agoraphobia/proc/belly_check(var/mob/living/carbon/human/H,var/obj/belly/B)
|
||||
var/list/in_range = list()
|
||||
if(istype(B))
|
||||
in_range |= check_mob_company(H,B.owner,FALSE)
|
||||
@@ -226,7 +226,7 @@
|
||||
in_range |= belly_check(H,B.owner.loc)
|
||||
return in_range
|
||||
|
||||
/datum/trait/agoraphobia/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M,var/invis_matters = TRUE)
|
||||
/datum/trait/negative/agoraphobia/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M,var/invis_matters = TRUE)
|
||||
var/list/in_range = list()
|
||||
if(!istype(M))
|
||||
return in_range
|
||||
@@ -245,7 +245,7 @@
|
||||
in_range |= check_contents(M,H)
|
||||
return in_range
|
||||
|
||||
/datum/trait/agoraphobia/proc/check_contents(var/atom/item,var/mob/living/carbon/human/H,var/max_layer = 3,var/current_layer = 1)
|
||||
/datum/trait/negative/agoraphobia/proc/check_contents(var/atom/item,var/mob/living/carbon/human/H,var/max_layer = 3,var/current_layer = 1)
|
||||
var/list/in_range = list()
|
||||
if(!item || !istype(item) || current_layer > max_layer)
|
||||
return in_range
|
||||
@@ -257,7 +257,7 @@
|
||||
in_range |= check_contents(content,H,max_layer,current_layer+1)
|
||||
return in_range
|
||||
|
||||
/datum/trait/lonely
|
||||
/datum/trait/negative/lonely
|
||||
name = "Minor loneliness vulnerability"
|
||||
desc = "You're very prone to loneliness! Being alone for extended periods of time causes adverse effects. Most mobs will cure this loneliness as long as they aren't hostile."
|
||||
cost = -2
|
||||
@@ -268,7 +268,7 @@
|
||||
special_env = TRUE
|
||||
excludes = list(/datum/trait/lonely/major,/datum/trait/agoraphobia)
|
||||
|
||||
/datum/trait/lonely/major
|
||||
/datum/trait/negative/lonely/major
|
||||
name = "Major loneliness vulnerability"
|
||||
desc = "You're extremely prone to loneliness! Being alone for extended periods of time causes adverse effects. Most mobs won't be enough to cure this loneliness, you need other social beings."
|
||||
cost = -5
|
||||
@@ -279,13 +279,13 @@
|
||||
special_env = TRUE
|
||||
excludes = list(/datum/trait/lonely,/datum/trait/agoraphobia)
|
||||
|
||||
/datum/trait/lonely/proc/sub_loneliness(var/mob/living/carbon/human/H,var/amount = 4)
|
||||
/datum/trait/negative/lonely/proc/sub_loneliness(var/mob/living/carbon/human/H,var/amount = 4)
|
||||
H.loneliness_stage = max(H.loneliness_stage - 4, 0)
|
||||
if(world.time >= H.next_loneliness_time && H.loneliness_stage > 0)
|
||||
to_chat(H, "The nearby company calms you down...")
|
||||
H.next_loneliness_time = world.time+500
|
||||
|
||||
/datum/trait/lonely/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M)
|
||||
/datum/trait/negative/lonely/proc/check_mob_company(var/mob/living/carbon/human/H,var/mob/living/M)
|
||||
if(!istype(M))
|
||||
return 0
|
||||
var/social_check = only_people && !istype(M, /mob/living/carbon) && !istype(M, /mob/living/silicon/robot)
|
||||
@@ -305,7 +305,7 @@
|
||||
check_mob_company(H,content)
|
||||
return 0
|
||||
|
||||
/datum/trait/lonely/proc/check_contents(var/atom/item,var/mob/living/carbon/human/H,var/max_layer = 3,var/current_layer = 1)
|
||||
/datum/trait/negative/lonely/proc/check_contents(var/atom/item,var/mob/living/carbon/human/H,var/max_layer = 3,var/current_layer = 1)
|
||||
if(!item || !istype(item) || current_layer > max_layer)
|
||||
return 0
|
||||
for(var/datum/content in item.contents)
|
||||
@@ -318,7 +318,7 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/datum/trait/lonely/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/lonely/handle_environment_special(var/mob/living/carbon/human/H)
|
||||
spawn(0)
|
||||
// If they're dead or unconcious they're a bit beyond this kind of thing.
|
||||
if(H.stat)
|
||||
@@ -359,7 +359,7 @@
|
||||
if(H.loneliness_stage >= warning_cap && H.hallucination < hallucination_cap)
|
||||
H.hallucination = min(hallucination_cap,H.hallucination+2.5*escalation_speed)
|
||||
|
||||
/datum/trait/lonely/proc/handle_loneliness(var/mob/living/carbon/human/H)
|
||||
/datum/trait/negative/lonely/proc/handle_loneliness(var/mob/living/carbon/human/H)
|
||||
var/ms = ""
|
||||
if(H.loneliness_stage == escalation_speed)
|
||||
ms = "Well.. No one is around you anymore..."
|
||||
|
||||
Reference in New Issue
Block a user