Fixes holodeck monkeys gibbing (#80660)

Holodeck takes apart all hologram atoms, blindly. This breaks a lot, but
most notably people.
I've also went and given monkeys organs again, which were removed in
#79068. This broke incredibly hard, because monkeys can't live without
DNA or organs (who would've thought)

Fixes #80369, #79184

🆑
fix: Holodeck monkeys are properly cleaned up now
fix: Holodeck monkeys have organs now
/🆑

Look they're so happy and wont gib on deload

![image](https://github.com/tgstation/tgstation/assets/7501474/7e1f5a12-143c-4906-9d1e-79559dcb49dc)

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
Time-Green
2023-12-30 21:59:38 +01:00
committed by GitHub
co-authored by MrMelbert
parent db70909697
commit 1016f62661
4 changed files with 10 additions and 16 deletions
+3
View File
@@ -286,6 +286,7 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
RegisterSignal(holo_effect_product, COMSIG_QDELETING, PROC_REF(remove_from_holo_lists))
if(islist(holo_effect_product))
for(var/atom/atom_product as anything in holo_effect_product)
spawned += atom_product
RegisterSignal(atom_product, COMSIG_QDELETING, PROC_REF(remove_from_holo_lists))
return
@@ -325,6 +326,8 @@ GLOBAL_LIST_INIT(typecache_holodeck_linked_floorcheck_ok, typecacheof(list(/turf
UnregisterSignal(holo_atom, COMSIG_QDELETING)
var/turf/target_turf = get_turf(holo_atom)
for(var/atom/movable/atom_contents as anything in holo_atom) //make sure that things inside of a holoitem are moved outside before destroying it
if(atom_contents.flags_1 & HOLOGRAM_1) //hologram in hologram is fine
continue
atom_contents.forceMove(target_turf)
if(istype(holo_atom, /obj/item/clothing/under))
+7
View File
@@ -105,6 +105,13 @@
/obj/effect/holodeck_effect/mobspawner/monkey
mobtype = /mob/living/carbon/human/species/monkey/holodeck
/obj/effect/holodeck_effect/mobspawner/monkey/activate(obj/machinery/computer/holodeck/computer)
var/mob/living/carbon/human/monkey = ..()
. = list() + monkey
for(var/atom/atom as anything in monkey.contents + monkey.organs)
. += atom
/obj/effect/holodeck_effect/mobspawner/penguin
mobtype = /mob/living/basic/pet/penguin/emperor/neuter