silent paralysis

This commit is contained in:
Timothy Teakettle
2020-09-30 21:40:42 +01:00
parent 6b46fdbc32
commit 16735e0190
4 changed files with 33 additions and 25 deletions
+2 -2
View File
@@ -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()
. = ..()
@@ -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//////////////////////////////////////////
+4 -4
View File
@@ -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)
+20 -18
View File
@@ -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, "<span class='userdanger'>Your [name] is too damaged to function!</span>")
if(BODYPART_DISABLED_PARALYSIS)
to_chat(owner, "<span class='userdanger'>You can't feel your [name]!</span>")
if(!silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")
to_chat(owner, "<span class='userdanger'>Your [name] is too damaged to function!</span>")
if(BODYPART_DISABLED_PARALYSIS)
to_chat(owner, "<span class='userdanger'>You can't feel your [name]!</span>")
/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, "<span class='userdanger'>Your [name] is too damaged to function!</span>")
if(BODYPART_DISABLED_PARALYSIS)
to_chat(owner, "<span class='userdanger'>You can't feel your [name]!</span>")
if(!silent)
switch(disabled)
if(BODYPART_DISABLED_DAMAGE)
owner.emote("scream")
to_chat(owner, "<span class='userdanger'>Your [name] is too damaged to function!</span>")
if(BODYPART_DISABLED_PARALYSIS)
to_chat(owner, "<span class='userdanger'>You can't feel your [name]!</span>")
/obj/item/bodypart/r_leg/digitigrade
name = "right digitigrade leg"