From 772c2d13fe1f204b5a0d70d0843acae3f4550d2a Mon Sep 17 00:00:00 2001
From: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com>
Date: Tue, 27 Feb 2024 17:21:23 -0500
Subject: [PATCH] Revival nests description updated, heals hivenoded humans
(#24299)
* revival nests no longer lie and say they can turn humans into eggs
* works on hivenode humans, no longer breaks down humans
* no bitches
---
.../stool_bed_chair_nest/alien_nests.dm | 64 +++++++------------
1 file changed, 23 insertions(+), 41 deletions(-)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index 3313812d833..10a43fe214d 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -113,7 +113,7 @@
/obj/structure/bed/revival_nest
name = "alien rejuvenation nest"
- desc = "It's a gruesome pile of thick, sticky resin shaped like a flytrap. Heals damaged aliens and slowly revives the dead, breaks down non xenos and uses their genetic soup to make an alien egg."
+ desc = "It's a gruesome pile of thick, sticky resin shaped like a flytrap. Heals damaged aliens and slowly revives the dead."
icon = 'icons/mob/alien.dmi'
icon_state = "placeholder_rejuv_nest"
max_integrity = 30
@@ -125,28 +125,7 @@
/obj/structure/bed/revival_nest/user_unbuckle_mob(mob/living/buckled_mob, mob/user)
for(var/mob/living/M in buckled_mobs) //breaking a nest releases all the buckled mobs, because the nest isn't holding them down anymore
- if(HAS_TRAIT(user, TRAIT_XENO_IMMUNE))
- unbuckle_mob(M)
- add_fingerprint(user)
- return
-
- if(M != user)
- M.visible_message("[user] tears [M] out of the rejuvination pod!",\
- "[user] pulls you free from the rejuvination pod!",\
- "You hear squelching...")
- else
- M.visible_message("[M] struggles to break free from the rejuvination pod!",\
- "You struggle to break free from the rejuvination pod... (Stay still for 15 seconds.)",\
- "You hear squelching...")
- if(!do_after(M, 15 SECONDS, target = src))
- if(M && M.buckled)
- to_chat(M, "You fail to escape \the [src]!")
- return
- if(!M.buckled)
- return
- M.visible_message("[M] breaks free from the rejuvination pod!",\
- "You break free from the rejuvination pod!",\
- "You hear squelching...")
+ if(user.get_int_organ(/obj/item/organ/internal/alien/hivenode))
unbuckle_mob(M)
add_fingerprint(user)
@@ -157,24 +136,23 @@
/obj/structure/bed/revival_nest/process()
for(var/mob/living/buckled_mob in buckled_mobs)
processing_ticks++
- if(isalien(buckled_mob))
- buckled_mob.adjustBruteLoss(-5)
- buckled_mob.adjustFireLoss(-5)
- buckled_mob.adjustToxLoss(-5)
- buckled_mob.adjustOxyLoss(-5)
- buckled_mob.adjustCloneLoss(-5)
- for(var/datum/disease/virus in buckled_mob.viruses)
- if(virus.stage < 1 && processing_ticks >= 4)
- virus.cure()
- processing_ticks = 0
- if(virus.stage > 1 && processing_ticks >= 4)
- virus.stage--
- processing_ticks = 0
- if(buckled_mob.stat == DEAD && !revive_or_decay_timer)
- revive_or_decay_timer = addtimer(CALLBACK(src, PROC_REF(revive_dead_alien), buckled_mob), 40 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE)
- else
- buckled_mob.adjustBruteLoss(3)
- buckled_mob.adjustFireLoss(3)
+ if(!buckled_mob.get_int_organ(/obj/item/organ/internal/alien/hivenode))
+ continue
+ buckled_mob.adjustBruteLoss(-5)
+ buckled_mob.adjustFireLoss(-5)
+ buckled_mob.adjustToxLoss(-5)
+ buckled_mob.adjustOxyLoss(-5)
+ buckled_mob.adjustCloneLoss(-5)
+ for(var/datum/disease/virus in buckled_mob.viruses)
+ if(virus.stage < 1 && processing_ticks >= 4)
+ virus.cure()
+ processing_ticks = 0
+ if(virus.stage > 1 && processing_ticks >= 4)
+ virus.stage--
+ processing_ticks = 0
+ if(buckled_mob.stat == DEAD && !revive_or_decay_timer && isalien(buckled_mob))
+ revive_or_decay_timer = addtimer(CALLBACK(src, PROC_REF(revive_dead_alien), buckled_mob), 40 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE)
+
/obj/structure/bed/revival_nest/proc/revive_dead_alien(mob/living/carbon/alien/dead_alien)
dead_alien.revive()
@@ -212,6 +190,10 @@
if(has_buckled_mobs())
unbuckle_all_mobs()
+ if(!M.get_int_organ(/obj/item/organ/internal/alien/hivenode))
+ to_chat(user, "[src] would be of no use to [M].")
+ return
+
if(buckle_mob(M))
M.visible_message("[user] secretes a thick vile goo, securing [M] into [src]!",\
"[user] drenches you in a foul-smelling resin, trapping you in [src]!",\