From 31a357b48d8f6a94c81538146df41af71e57748b Mon Sep 17 00:00:00 2001
From: XFirebirdX <142694283+XFirebirdX@users.noreply.github.com>
Date: Sat, 4 Oct 2025 02:33:19 +0200
Subject: [PATCH] Fixes some golem oversights. (#30605)
---
code/modules/surgery/organs/brain.dm | 1 +
code/modules/surgery/organs/organ.dm | 3 ++-
code/modules/surgery/organs_internal.dm | 7 +++++++
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/code/modules/surgery/organs/brain.dm b/code/modules/surgery/organs/brain.dm
index 9880d58bbba..daaffbc74a2 100644
--- a/code/modules/surgery/organs/brain.dm
+++ b/code/modules/surgery/organs/brain.dm
@@ -208,6 +208,7 @@
desc = "A tightly furled roll of paper, covered with indecipherable runes."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
+ requires_golem_person = TRUE
/obj/item/organ/internal/brain/cluwne
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index 4d2b13883ba..d3c8bf9ae31 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -32,7 +32,8 @@
var/requires_robotic_bodypart = FALSE
/// When this variable is true, it can only be installed on the machine person species.
var/requires_machine_person = FALSE
-
+ /// When this variable is true, it can only be inserted on the golem species.
+ var/requires_golem_person = FALSE
///Should this organ be destroyed on removal?
var/destroy_on_removal = FALSE
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index c6184be772b..f703d85ab59 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -389,6 +389,10 @@
to_chat(user, "[I] is an organ that requires an IPC interface! [target]'s [parse_zone(target_zone)] does not have one.")
return SURGERY_BEGINSTEP_SKIP
+ if(I.requires_golem_person && !isgolem(target))
+ to_chat(user, "[I] requires a Golem body! [I] won't fit into [target]'s body.")
+ return SURGERY_BEGINSTEP_SKIP
+
if(target_zone != I.parent_organ || target.get_organ_slot(I.slot))
to_chat(user, "There is no room for [I] in [target]'s [parse_zone(target_zone)]!")
return SURGERY_BEGINSTEP_SKIP
@@ -428,6 +432,9 @@
if(I.requires_machine_person && !ismachineperson(target))
to_chat(user, "[I] requires an IPC interface!")
return SURGERY_STEP_INCOMPLETE
+ if(I.requires_golem_person && !isgolem(target))
+ to_chat(user, "[I] requires a Golem body! [I] won't fit into [target]'s body.")
+ return SURGERY_STEP_INCOMPLETE
if(!user.drop_item())
to_chat(user, "[I] is stuck to your hand, you can't put it in [target]!")
return SURGERY_STEP_INCOMPLETE