diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index d3b08100319..a4c25350e5f 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -243,6 +243,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
var/changeling_speak = 0
var/datum/dna/chosen_dna
var/obj/effect/proc_holder/changeling/sting/chosen_sting
+ var/regenerating = FALSE
/datum/changeling/New(gender=FEMALE)
..()
diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm
index a07670647c3..19cbbbdc3bd 100644
--- a/code/game/gamemodes/changeling/powers/fakedeath.dm
+++ b/code/game/gamemodes/changeling/powers/fakedeath.dm
@@ -20,7 +20,8 @@
user.med_hud_set_health()
user.handle_hud_icons_health()
user.med_hud_set_status()
-
+ user.mind.changeling.regenerating = TRUE
+
addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME)
feedback_add_details("changeling_powers","FD")
return 1
diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm
index 147fdd2d327..83f221a95d3 100644
--- a/code/game/gamemodes/changeling/powers/revive.dm
+++ b/code/game/gamemodes/changeling/powers/revive.dm
@@ -55,6 +55,7 @@
user.updatehealth("revive sting")
user.update_blind_effects()
user.update_blurry_effects()
+ user.mind.changeling.regenerating = FALSE
to_chat(user, "We have regenerated.")
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index dfe2d433be2..082a970bb12 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -153,7 +153,8 @@
/obj/item/toy/cards/deck/syndicate = 2,
/obj/item/storage/secure/briefcase/syndie = 2,
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 2,
- "" = 70
+ /obj/item/storage/pill_bottle/fakedeath = 2,
+ "" = 68
)
/obj/effect/spawner/lootdrop/crate_spawner // for ruins
diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
index f484d8c001b..66f7e9b9492 100644
--- a/code/game/objects/items/weapons/storage/firstaid.dm
+++ b/code/game/objects/items/weapons/storage/firstaid.dm
@@ -330,3 +330,9 @@
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
+
+/obj/item/storage/pill_bottle/fakedeath/New()
+ ..()
+ new /obj/item/reagent_containers/food/pill/fakedeath(src)
+ new /obj/item/reagent_containers/food/pill/fakedeath(src)
+ new /obj/item/reagent_containers/food/pill/fakedeath(src)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 8f72b7c9e04..ef2292afb64 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -283,4 +283,4 @@ To apply, hold the injector a short distance away from the outer thigh before ap
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/balaclava(src)
new /obj/item/clothing/accessory/stethoscope(src)
- new /obj/item/book/manual/engineering_hacking(src)
+ new /obj/item/book/manual/engineering_hacking(src)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm
index fd376b8022c..bc276b05b00 100644
--- a/code/modules/mob/living/carbon/human/species/_species.dm
+++ b/code/modules/mob/living/carbon/human/species/_species.dm
@@ -315,7 +315,7 @@
/datum/species/proc/help(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
if(attacker_style && attacker_style.help_act(user, target))//adminfu only...
return TRUE
- if(target.health >= config.health_threshold_crit)
+ if(target.health >= config.health_threshold_crit && !(target.status_flags & FAKEDEATH))
target.help_shake_act(user)
return TRUE
else
diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm
index 2ae74f4a91f..7e76217fe15 100644
--- a/code/modules/reagents/chemistry/reagents.dm
+++ b/code/modules/reagents/chemistry/reagents.dm
@@ -155,3 +155,32 @@
if(prob(5))
to_chat(M, "You would DIE for some [name] right now!")
return update_flags
+
+/datum/reagent/proc/fakedeath(mob/living/M)
+ if(M.status_flags & FAKEDEATH)
+ return
+ if(!(M.status_flags & CANPARALYSE))
+ return
+ if(M.mind && M.mind.changeling && M.mind.changeling.regenerating) //no messing with changeling's fake death
+ return
+ M.visible_message("[M] seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
+ M.status_flags |= FAKEDEATH
+ M.update_stat("fakedeath reagent")
+ M.med_hud_set_health()
+ M.med_hud_set_status()
+
+/datum/reagent/proc/fakerevive(mob/living/M)
+ if(!(M.status_flags & FAKEDEATH))
+ return
+ if(M.mind && M.mind.changeling && M.mind.changeling.regenerating)
+ return
+ if(M.resting)
+ M.StopResting()
+ M.status_flags &= ~(FAKEDEATH)
+ M.update_stat("fakedeath reagent end")
+ M.med_hud_set_status()
+ M.med_hud_set_health()
+ if(M.healthdoll)
+ M.healthdoll.cached_healthdoll_overlays.Cut()
+ if(M.dna.species)
+ M.dna.species.handle_hud_icons(M)
\ No newline at end of file
diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm
index 4bc534c6d8b..d4de3d368a2 100644
--- a/code/modules/reagents/chemistry/reagents/toxins.dm
+++ b/code/modules/reagents/chemistry/reagents/toxins.dm
@@ -1037,7 +1037,7 @@
/datum/reagent/capulettium
name = "Capulettium"
id = "capulettium"
- description = "A rare drug that causes the user to appear dead for some time."
+ description = "A rare drug that causes the user to fall unconscious and appear dead as long as it's in the body."
reagent_state = LIQUID
color = "#60A584"
heart_rate_stop = 1
@@ -1046,23 +1046,21 @@
/datum/reagent/capulettium/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
- if(1 to 5)
+ if(1 to 10)
update_flags |= M.AdjustEyeBlurry(10, FALSE)
- if(6 to 10)
- M.Drowsy(10)
if(11)
- update_flags |= M.Paralyse(10, FALSE)
- M.visible_message("[M] seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
- if(12 to 60)
- update_flags |= M.Paralyse(10, FALSE)
- if(61 to INFINITY)
- update_flags |= M.AdjustEyeBlurry(10, FALSE)
+ fakedeath(M)
return ..() | update_flags
+/datum/reagent/capulettium/on_mob_delete(mob/living/M)
+ if(M.status_flags & FAKEDEATH)
+ fakerevive(M)
+ ..()
+
/datum/reagent/capulettium_plus
name = "Capulettium Plus"
id = "capulettium_plus"
- description = "A rare and expensive drug that causes the user to appear dead for some time while they retain consciousness and vision."
+ description = "A rare and expensive drug that will silence the user and let him appear dead as long as it's in the body. Rest to play dead, stand up to wake up."
reagent_state = LIQUID
color = "#60A584"
heart_rate_stop = 1
@@ -1070,8 +1068,17 @@
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
M.Silence(2)
+ if((M.status_flags & FAKEDEATH) && !M.resting)
+ fakerevive(M)
+ else if(!(M.status_flags & FAKEDEATH) && M.resting)
+ fakedeath(M)
return ..()
+/datum/reagent/capulettium_plus/on_mob_delete(mob/living/M)
+ if(M.status_flags & FAKEDEATH)
+ fakerevive(M)
+ ..()
+
/datum/reagent/toxic_slurry
name = "Toxic Slurry"
id = "toxic_slurry"
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 432dad36e6b..71b0532650b 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -63,6 +63,12 @@
icon_state = "pill21"
list_reagents = list("initropidril" = 50)
+/obj/item/reagent_containers/food/pill/fakedeath
+ name = "fake death pill"
+ desc = "Swallow then rest to appear dead, stand up to wake up. Also mutes the user's voice."
+ icon_state = "pill4"
+ list_reagents = list("capulettium_plus" = 50)
+
/obj/item/reagent_containers/food/pill/adminordrazine
name = "Adminordrazine pill"
desc = "It's magic. We don't have to explain it."