From 16735e01906e98139cf8c22bd25f863d7a5c95a5 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 30 Sep 2020 21:40:42 +0100 Subject: [PATCH] silent paralysis --- code/modules/mob/living/carbon/carbon.dm | 4 +- .../carbon/human/species_types/jellypeople.dm | 8 +++- code/modules/surgery/bodyparts/_bodyparts.dm | 8 ++-- code/modules/surgery/bodyparts/parts.dm | 38 ++++++++++--------- 4 files changed, 33 insertions(+), 25 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 1706763f6b..6f435a6294 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -999,10 +999,10 @@ var/obj/item/organ/I = X I.Insert(src) -/mob/living/carbon/proc/update_disabled_bodyparts() +/mob/living/carbon/proc/update_disabled_bodyparts(silent = FALSE) for(var/B in bodyparts) var/obj/item/bodypart/BP = B - BP.update_disabled() + BP.update_disabled(silent) /mob/living/carbon/vv_get_dropdown() . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index dba5f0094e..b074b5a778 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -666,9 +666,11 @@ var/puddle_state = "puddle" var/tracked_overlay var/datum/component/squeak/squeak + var/transforming = FALSE /datum/action/innate/slime_puddle/Activate() - if(isjellyperson(owner)) + if(isjellyperson(owner) && !transforming) + transforming = TRUE var/mob/living/carbon/human/H = owner var/mutcolor = "#" + H.dna.features["mcolor"] if(!is_puddle) @@ -687,12 +689,14 @@ ADD_TRAIT(H, TRAIT_SPRINT_LOCKED, "SLIME_PUDDLE_SPRINT_LOCK") ADD_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, "SLIME_PUDDLE_COMBAT_LOCK") ADD_TRAIT(H, TRAIT_MOBILITY_NOSTAND, "SLIME_PUDDLE_CANNOT_STAND") + H.update_disabled_bodyparts(silent = TRUE) squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) sleep(in_transformation_duration) var/mutable_appearance/puddle_overlay = mutable_appearance(icon = puddle_icon, icon_state = puddle_state) puddle_overlay.color = mutcolor tracked_overlay = puddle_overlay owner.add_overlay(puddle_overlay) + transforming = FALSE else owner.cut_overlay(tracked_overlay) var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir) @@ -708,10 +712,12 @@ REMOVE_TRAIT(H, TRAIT_SPRINT_LOCKED, "SLIME_PUDDLE_SPRINT_LOCK") REMOVE_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, "SLIME_PUDDLE_COMBAT_LOCK") REMOVE_TRAIT(H, TRAIT_MOBILITY_NOSTAND, "SLIME_PUDDLE_CANNOT_STAND") + H.update_disabled_bodyparts(silent = TRUE) is_puddle = FALSE if(squeak) squeak.RemoveComponent() owner.regenerate_icons() + transforming = FALSE ///////////////////////////////////LUMINESCENTS////////////////////////////////////////// diff --git a/code/modules/surgery/bodyparts/_bodyparts.dm b/code/modules/surgery/bodyparts/_bodyparts.dm index e90f86bf1c..6a010f5b0f 100644 --- a/code/modules/surgery/bodyparts/_bodyparts.dm +++ b/code/modules/surgery/bodyparts/_bodyparts.dm @@ -481,12 +481,12 @@ //Checks disabled status thresholds //Checks disabled status thresholds -/obj/item/bodypart/proc/update_disabled() +/obj/item/bodypart/proc/update_disabled(silent = FALSE) if(!owner) return - set_disabled(is_disabled()) + set_disabled(is_disabled(silent), silent) -/obj/item/bodypart/proc/is_disabled() +/obj/item/bodypart/proc/is_disabled(silent = FALSE) if(!owner) return if(HAS_TRAIT(owner, TRAIT_PARALYSIS)) @@ -498,7 +498,7 @@ if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER)) . = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled if(get_damage(TRUE) >= max_damage * (HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE) ? 0.6 : 1)) //Easy limb disable disables the limb at 40% health instead of 0% - if(!last_maxed) + if(!last_maxed && !silent) owner.emote("scream") last_maxed = TRUE if(!is_organic_limb() || stamina_dam >= max_damage) diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 5a887ee6b7..86288564ae 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -75,11 +75,11 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/l_arm/set_disabled(new_disabled) +/obj/item/bodypart/l_arm/set_disabled(new_disabled, silent = FALSE) . = ..() if(!.) return - if(owner.stat < UNCONSCIOUS) + if(owner.stat < UNCONSCIOUS && !silent) switch(disabled) if(BODYPART_DISABLED_DAMAGE) owner.emote("scream") @@ -136,11 +136,11 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/r_arm/set_disabled(new_disabled) +/obj/item/bodypart/r_arm/set_disabled(new_disabled, silent = FALSE) . = ..() if(!.) return - if(owner.stat < UNCONSCIOUS) + if(owner.stat < UNCONSCIOUS && !silent) switch(disabled) if(BODYPART_DISABLED_DAMAGE) owner.emote("scream") @@ -196,16 +196,17 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/l_leg/set_disabled(new_disabled) +/obj/item/bodypart/l_leg/set_disabled(new_disabled, silent = FALSE) . = ..() if(!. || owner.stat >= UNCONSCIOUS) return - switch(disabled) - if(BODYPART_DISABLED_DAMAGE) - owner.emote("scream") - to_chat(owner, "Your [name] is too damaged to function!") - if(BODYPART_DISABLED_PARALYSIS) - to_chat(owner, "You can't feel your [name]!") + if(!silent) + switch(disabled) + if(BODYPART_DISABLED_DAMAGE) + owner.emote("scream") + to_chat(owner, "Your [name] is too damaged to function!") + if(BODYPART_DISABLED_PARALYSIS) + to_chat(owner, "You can't feel your [name]!") /obj/item/bodypart/l_leg/digitigrade name = "left digitigrade leg" @@ -253,16 +254,17 @@ return BODYPART_DISABLED_PARALYSIS return ..() -/obj/item/bodypart/r_leg/set_disabled(new_disabled) +/obj/item/bodypart/r_leg/set_disabled(new_disabled, silent = FALSE) . = ..() if(!. || owner.stat >= UNCONSCIOUS) return - switch(disabled) - if(BODYPART_DISABLED_DAMAGE) - owner.emote("scream") - to_chat(owner, "Your [name] is too damaged to function!") - if(BODYPART_DISABLED_PARALYSIS) - to_chat(owner, "You can't feel your [name]!") + if(!silent) + switch(disabled) + if(BODYPART_DISABLED_DAMAGE) + owner.emote("scream") + to_chat(owner, "Your [name] is too damaged to function!") + if(BODYPART_DISABLED_PARALYSIS) + to_chat(owner, "You can't feel your [name]!") /obj/item/bodypart/r_leg/digitigrade name = "right digitigrade leg"