[MIRROR] Healium is too powerful we need to nerf it! (#908)

* Healium is too powerful we need to nerf it! (#53766)

Healium was too stronk, nerfed it to behave like a good gas.
Added coughing and euphoria mood if breathed in small quantities to alert the player.
Sleep if it is 3 moles in the air for 3 to 5 seconds
Sleep you if is more than 6 moles and it heals you while knocked down.
Lowered the amount of healing done

Edit: It doesnt knock you out, it makes you sleep now, since the knockdown effect was so strong that people wouldn't wake up

* Healium is too powerful we need to nerf it!

Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
This commit is contained in:
SkyratBot
2020-09-21 16:42:15 +02:00
committed by GitHub
co-authored by Ghilker
parent 0944a9db41
commit ce49a4283b
7 changed files with 90 additions and 46 deletions
@@ -21,7 +21,7 @@
amount *= (rand(125, 130) * 0.01)
return ..()
/mob/living/carbon/human/Sleeping(amount, updating = 1, ignore_canstun = 0)
/mob/living/carbon/human/Sleeping(amount, updating = 1)
if(HAS_TRAIT(src, TRAIT_HEAVY_SLEEPER))
amount *= (rand(125, 130) * 0.01)
return ..()
+41 -32
View File
@@ -291,7 +291,8 @@
/////////////////////////////////// SLEEPING ////////////////////////////////////
/mob/living/proc/IsSleeping() //If we're asleep
return has_status_effect(STATUS_EFFECT_SLEEPING)
if(!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE))
return has_status_effect(STATUS_EFFECT_SLEEPING)
/mob/living/proc/AmountSleeping() //How many deciseconds remain in our sleep
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
@@ -299,41 +300,49 @@
return S.duration - world.time
return 0
/mob/living/proc/Sleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Can't go below remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN)
/mob/living/proc/Sleeping(amount, updating = TRUE) //Can't go below remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating) & COMPONENT_NO_STUN)
return
if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun)
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(S)
S.duration = max(world.time + amount, S.duration)
else if(amount > 0)
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(S)
S.duration = max(world.time + amount, S.duration)
else if(amount > 0)
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
/mob/living/proc/SetSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Sets remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN)
/mob/living/proc/SetSleeping(amount, updating = TRUE) //Sets remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating) & COMPONENT_NO_STUN)
return
if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun)
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(amount <= 0)
if(S)
qdel(S)
else if(S)
S.duration = world.time + amount
else
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
/mob/living/proc/AdjustSleeping(amount, updating = TRUE, ignore_canstun = FALSE) //Adds to remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating, ignore_canstun) & COMPONENT_NO_STUN)
return
if((!HAS_TRAIT(src, TRAIT_SLEEPIMMUNE)) || ignore_canstun)
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(amount <= 0)
if(S)
S.duration += amount
else if(amount > 0)
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
qdel(S)
else if(S)
S.duration = world.time + amount
else
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
/mob/living/proc/AdjustSleeping(amount, updating = TRUE) //Adds to remaining duration
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, amount, updating) & COMPONENT_NO_STUN)
return
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(S)
S.duration += amount
else if(amount > 0)
S = apply_status_effect(STATUS_EFFECT_SLEEPING, amount, updating)
return S
///Allows us to set a permanent sleep on a player (use with caution and remember to unset it with SetSleeping() after the effect is over)
/mob/living/proc/PermaSleeping(updating = TRUE)
if(SEND_SIGNAL(src, COMSIG_LIVING_STATUS_SLEEP, -1, updating) & COMPONENT_NO_STUN)
return
var/datum/status_effect/incapacitating/sleeping/S = IsSleeping()
if(S)
S.duration = -1
else
S = apply_status_effect(STATUS_EFFECT_SLEEPING, -1, updating)
return S
///////////////////////////////// FROZEN /////////////////////////////////////
+2 -2
View File
@@ -135,7 +135,7 @@
O.Immobilize(AmountImmobilized(), ignore_canstun = TRUE)
O.Paralyze(AmountParalyzed(), ignore_canstun = TRUE)
O.Unconscious(AmountUnconscious(), ignore_canstun = TRUE)
O.Sleeping(AmountSleeping(), ignore_canstun = TRUE)
O.Sleeping(AmountSleeping())
//transfer reagents
if(tr_flags & TR_KEEPREAGENTS)
@@ -314,7 +314,7 @@
O.Immobilize(AmountImmobilized(), ignore_canstun = TRUE)
O.Paralyze(AmountParalyzed(), ignore_canstun = TRUE)
O.Unconscious(AmountUnconscious(), ignore_canstun = TRUE)
O.Sleeping(AmountSleeping(), ignore_canstun = TRUE)
O.Sleeping(AmountSleeping())
//transfer reagents
if(tr_flags & TR_KEEPREAGENTS)