diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm
index a71e1003fbc..29bd9801b26 100644
--- a/code/modules/surgery/organs/helpers.dm
+++ b/code/modules/surgery/organs/helpers.dm
@@ -7,6 +7,9 @@
/mob/proc/get_organ_slot(slot) //is it a brain, is it a brain_tumor?
return
+/mob/proc/get_int_organ_tag(tag) //is it a brain, is it a brain_tumor?
+ return
+
/mob/living/carbon/get_int_organ(typepath)
return (locate(typepath) in internal_organs)
@@ -31,5 +34,10 @@
if(slot == O.slot)
return O
+/mob/living/carbon/get_int_organ_tag(tag)
+ for(var/obj/item/organ/internal/O in internal_organs)
+ if(tag == O.organ_tag)
+ return O
+
/proc/is_int_organ(atom/A)
return istype(A, /obj/item/organ/internal)
\ No newline at end of file
diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm
index f1a5497a93c..a4fc9e94447 100644
--- a/code/modules/surgery/organs/organ.dm
+++ b/code/modules/surgery/organs/organ.dm
@@ -296,15 +296,14 @@ var/list/organ_cache = list()
if(!istype(owner))
return
- //if(is_primary_organ())//Toddo from fethas:Do i need to move ths?
- // owner.internal_organs_by_name[organ_tag] = null
- // owner.internal_organs_by_name -= organ_tag
- // owner.internal_organs_by_name -= null // uh what does this line even do this seems silly
-
- owner.internal_organs -= src
+ var/obj/item/organ/internal/O = owner.get_int_organ_tag(organ_tag)
+ world << "[O]"
+ if(O)
+ owner.internal_organs -= O
+ //O.forceMove(src)
var/obj/item/organ/external/affected = owner.get_organ(parent_organ)
- if(affected) affected.internal_organs -= src
+ if(affected) affected.internal_organs -= O
loc = get_turf(owner)
processing_objects |= src
@@ -313,7 +312,7 @@ var/list/organ_cache = list()
if(!organ_blood || !organ_blood.data["blood_DNA"])
owner.vessel.trans_to(src, 5, 1, 1)
- if(owner && vital && is_primary_organ()) // I'd do another check for species or whatever so that you couldn't "kill" an IPC by removing a human head from them, but it doesn't matter since they'll come right back from the dead
+ if(owner && vital) // I'd do another check for species or whatever so that you couldn't "kill" an IPC by removing a human head from them, but it doesn't matter since they'll come right back from the dead
if(user)
user.attack_log += "\[[time_stamp()]\] removed a vital organ ([src]) from [key_name(owner)] (INTENT: [uppertext(user.a_intent)])"
owner.attack_log += "\[[time_stamp()]\] had a vital organ ([src]) removed by [key_name(user)] (INTENT: [uppertext(user.a_intent)])"
@@ -348,4 +347,4 @@ I use this so that this can be made better once the organ overhaul rolls out --
O = owner
if (!istype(owner)) // You're not the primary organ of ANYTHING, bucko
return 0
- return src == O.get_int_organ(organ_tag)
+ return src == O.get_int_organ_tag(organ_tag)
diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm
index 50d9ffc11a3..46db5226add 100644
--- a/code/modules/surgery/organs/organ_external.dm
+++ b/code/modules/surgery/organs/organ_external.dm
@@ -867,8 +867,8 @@ Note that amputating the affected organ does in fact remove the infection from t
O.forceMove(src)
// Grab all the internal giblets too.
- for(var/obj/item/organ/organ in internal_organs)
- organ.removed()
+ for(var/obj/item/organ/internal/organ in internal_organs)
+ organ.remove(victim)
organ.forceMove(src)
release_restraints(victim)
diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm
index c319e3d570d..c95c18ba32b 100644
--- a/code/modules/surgery/organs/subtypes/diona.dm
+++ b/code/modules/surgery/organs/subtypes/diona.dm
@@ -153,7 +153,7 @@
name = "neural strata"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "special" // Turns into a nymph instantly, no transplanting possible.
+ organ_tag = "heart" // Turns into a nymph instantly, no transplanting possible.
origin_tech = "biotech=3"
parent_organ = "chest"
slot = "heart"
@@ -163,7 +163,7 @@
parent_organ = "head"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "special" // Turns into a nymph instantly, no transplanting possible.
+ organ_tag = "brain" // Turns into a nymph instantly, no transplanting possible.
origin_tech = "biotech=3"
slot = "brain"
@@ -171,7 +171,7 @@
name = "polyp segment"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "special" // Turns into a nymph instantly, no transplanting possible.
+ organ_tag = "kidneys" // Turns into a nymph instantly, no transplanting possible.
origin_tech = "biotech=3"
parent_organ = "groin"
slot = "kidneys"
@@ -180,14 +180,14 @@
name = "anchoring ligament"
icon = 'icons/obj/objects.dmi'
icon_state = "nymph"
- organ_tag = "special" // Turns into a nymph instantly, no transplanting possible.
+ organ_tag = "appendix" // Turns into a nymph instantly, no transplanting possible.
origin_tech = "biotech=3"
parent_organ = "groin"
slot = "appendix"
/obj/item/organ/internal/eyes/diona
name = "receptor node"
- organ_tag = "receptor node"
+ organ_tag = "eyes"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
origin_tech = "biotech=3"
@@ -199,7 +199,7 @@
/obj/item/organ/internal/liver/diona
name = "nutrient vessel"
parent_organ = "chest"
- organ_tag = "nutrient vessel"
+ organ_tag = "liver"
icon = 'icons/mob/alien.dmi'
icon_state = "claw"
slot = "liver"
diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm
index c2a750cb905..6300345e1bc 100644
--- a/code/modules/surgery/organs/subtypes/machine.dm
+++ b/code/modules/surgery/organs/subtypes/machine.dm
@@ -98,7 +98,7 @@
desc = "A small, powerful cell for use in fully prosthetic bodies."
icon = 'icons/obj/power.dmi'
icon_state = "scell"
- organ_tag = "cell"
+ organ_tag = "heart"
parent_organ = "chest"
slot = "heart"
vital = 1
@@ -117,7 +117,7 @@
/obj/item/organ/internal/optical_sensor
name = "optical sensor"
- organ_tag = "optics"
+ organ_tag = "eyes"
parent_organ = "head"
icon = 'icons/obj/robot_component.dmi'
icon_state = "camera"