From a653dfd69dfd59b5826a575c334e24423e30bd3f Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sat, 12 Mar 2016 00:49:36 -0500 Subject: [PATCH 01/11] god its late --- code/game/gamemodes/changeling/powers/augmented_eyesight.dm | 3 +++ code/modules/surgery/organs/augments_eyes.dm | 2 ++ code/modules/surgery/organs/organ.dm | 2 +- code/modules/surgery/organs/organ_external.dm | 3 ++- code/modules/surgery/organs/organ_internal.dm | 6 ++++++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index 832973d4ce6..21d703b9a83 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -43,6 +43,7 @@ origin_tech = "biotech=4" slot = "eye_ling" status = 0 + aug_message = "We feel a minute twitch in our eyes, our eyes feel more durable." /obj/item/organ/internal/cyberimp/eyes/shield/ling/on_life() ..() @@ -64,6 +65,8 @@ implant_overlay = null origin_tech = "biotech=5;magnets=5" slot = "eye_ling" + darkness_view = 8 + see_darkness = 0 status = 0 aug_message = "We feel a minute twitch in our eyes, and darkness creeps away." diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index 6dcd76bedfa..f3cf645f3a0 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -8,6 +8,8 @@ w_class = 1 var/vision_flags = 0 + var/darkness_view = 0 + var/see_darkness = 1 var/list/eye_colour = list(0,0,0) var/list/old_eye_colour = list(0,0,0) var/flash_protect = 0 diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index fee4aaa1eb6..eceb5d03737 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -81,7 +81,7 @@ var/list/organ_cache = list() return //Process infections - if ((status & ORGAN_ROBOT) || (sterile) ||(owner && owner.species && (owner.species.flags & IS_PLANT))) + if ((status & ORGAN_ROBOT) || sterile == 1 ||(owner && owner.species && (owner.species.flags & IS_PLANT))) germ_level = 0 return diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index c020b873354..f7c51acc6d7 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -312,7 +312,8 @@ This function completely restores a damaged organ to perfect condition. // handle internal organs for(var/obj/item/organ/internal/current_organ in internal_organs) - current_organ.rejuvenate() + if(!istype(current_organ,/obj/item/organ/internal/cyberimp)) + current_organ.rejuvenate() // remove embedded objects and drop them on the floor diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 48b97ed4c88..33dd362f81b 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -15,6 +15,12 @@ insert(holder) ..() + +/obj/item/organ/internal/process() + + ..() + + /obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) if(!iscarbon(M) || owner == M) return From 2eaff84f42aba91458cd05fdbb3fe73eeca66a1e Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Sun, 13 Mar 2016 08:08:15 -0400 Subject: [PATCH 02/11] mogjtbosdopm ues --- .../changeling/powers/augmented_eyesight.dm | 6 ++--- code/modules/surgery/organs/augments_eyes.dm | 2 -- code/modules/surgery/organs/organ.dm | 2 +- code/modules/surgery/organs/organ_external.dm | 2 +- code/modules/surgery/organs/organ_internal.dm | 13 +++++------ code/modules/surgery/other.dm | 22 +++++++++++++------ 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index 21d703b9a83..c7a858d7be7 100644 --- a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm +++ b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm @@ -13,7 +13,6 @@ if(!istype(user)) return if(user.get_int_organ(/obj/item/organ/internal/cyberimp/eyes/thermals/ling)) - user << "Our eyes are protected from flashes." var/obj/item/organ/internal/cyberimp/eyes/O = new /obj/item/organ/internal/cyberimp/eyes/shield/ling() O.insert(user) @@ -65,8 +64,6 @@ implant_overlay = null origin_tech = "biotech=5;magnets=5" slot = "eye_ling" - darkness_view = 8 - see_darkness = 0 status = 0 aug_message = "We feel a minute twitch in our eyes, and darkness creeps away." @@ -78,9 +75,12 @@ if(ishuman(owner)) var/mob/living/carbon/human/H = owner H.weakeyes = 1 + if(!H.vision_type) + H.vision_type = new /datum/vision_override/nightvision /obj/item/organ/internal/cyberimp/eyes/thermals/ling/remove(mob/living/carbon/M, special = 0) if(ishuman(owner)) var/mob/living/carbon/human/H = owner H.weakeyes = 0 + H.vision_type = null ..() \ No newline at end of file diff --git a/code/modules/surgery/organs/augments_eyes.dm b/code/modules/surgery/organs/augments_eyes.dm index f3cf645f3a0..6dcd76bedfa 100644 --- a/code/modules/surgery/organs/augments_eyes.dm +++ b/code/modules/surgery/organs/augments_eyes.dm @@ -8,8 +8,6 @@ w_class = 1 var/vision_flags = 0 - var/darkness_view = 0 - var/see_darkness = 1 var/list/eye_colour = list(0,0,0) var/list/old_eye_colour = list(0,0,0) var/flash_protect = 0 diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index eceb5d03737..5209237339f 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -81,7 +81,7 @@ var/list/organ_cache = list() return //Process infections - if ((status & ORGAN_ROBOT) || sterile == 1 ||(owner && owner.species && (owner.species.flags & IS_PLANT))) + if ((status & ORGAN_ROBOT) || sterile ||(owner && owner.species && (owner.species.flags & IS_PLANT))) germ_level = 0 return diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index f7c51acc6d7..7060cfa034f 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -312,7 +312,7 @@ This function completely restores a damaged organ to perfect condition. // handle internal organs for(var/obj/item/organ/internal/current_organ in internal_organs) - if(!istype(current_organ,/obj/item/organ/internal/cyberimp)) + if(!istype(current_organ,/obj/item/organ/internal/cyberimp)|| !istype(current_organ,/obj/item/organ/internal/xenos) || !istype(current_organ,/obj/item/organ/internal/hivelord_core)) current_organ.rejuvenate() diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 33dd362f81b..bff48e21bc4 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -16,15 +16,12 @@ ..() -/obj/item/organ/internal/process() - - ..() - - /obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) if(!iscarbon(M) || owner == M) return + processing_objects -= src + var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) replaced.remove(M, special = 1) @@ -48,6 +45,8 @@ /obj/item/organ/internal/remove(mob/living/carbon/M, special = 0) owner = null + + processing_objects |= src if(M) M.internal_organs -= src if(vital && !special) @@ -350,7 +349,7 @@ /obj/item/organ/internal/shadowtumor/New() ..() - processing_objects.Add(src) + processing_objects |= src /obj/item/organ/internal/shadowtumor/Destroy() processing_objects.Remove(src) @@ -383,7 +382,7 @@ /obj/item/organ/internal/honktumor/New() ..() - processing_objects.Add(src) + processing_objects |= src /obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0) ..() diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 004cea35e59..f5859bd6541 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -2,10 +2,16 @@ ////////////////////////////////////////////////////////////////// // INTERNAL WOUND PATCHING // ////////////////////////////////////////////////////////////////// + +/datum/surgery/infection + name = "external infection treatment/autopsy" + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/generic/cauterize) + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg") + /datum/surgery/bleeding name = "internal bleeding" steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders,/datum/surgery_step/generic/retract_skin,/datum/surgery_step/fix_vein,/datum/surgery_step/generic/cauterize) - possible_locs = list("chest","head","groin") + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg") /datum/surgery/bleeding/can_start(mob/user, mob/living/carbon/target) if(ishuman(target)) @@ -14,9 +20,10 @@ if(!affected) return 0 var/internal_bleeding = 0 - for(var/datum/wound/W in affected.wounds) if(W.internal) - internal_bleeding = 1 - break + for(var/datum/wound/W in affected.wounds) + if(W.internal) + internal_bleeding = 1 + break if(internal_bleeding) return 1 return 0 @@ -37,9 +44,10 @@ if(!affected) return 0 var/internal_bleeding = 0 - for(var/datum/wound/W in affected.wounds) if(W.internal) - internal_bleeding = 1 - break + for(var/datum/wound/W in affected.wounds) + if(W.internal) + internal_bleeding = 1 + break return affected.open == 2 && internal_bleeding From 84caa73a3c01a8dca86618f2aa7a3ce6a183f5e5 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Mon, 14 Mar 2016 23:45:47 -0400 Subject: [PATCH 03/11] rrollback --- code/modules/mob/living/living.dm | 1 - code/modules/surgery/organs/organ_external.dm | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index dd37b374fd1..5e1614f3cff 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -363,7 +363,6 @@ var/mob/living/carbon/C = src C.handcuffed = initial(C.handcuffed) C.heart_attack = 0 - C.brain_op_stage = 0 // restore all of the human's blood and reset their shock stage if(ishuman(src)) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 7060cfa034f..c020b873354 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -312,8 +312,7 @@ This function completely restores a damaged organ to perfect condition. // handle internal organs for(var/obj/item/organ/internal/current_organ in internal_organs) - if(!istype(current_organ,/obj/item/organ/internal/cyberimp)|| !istype(current_organ,/obj/item/organ/internal/xenos) || !istype(current_organ,/obj/item/organ/internal/hivelord_core)) - current_organ.rejuvenate() + current_organ.rejuvenate() // remove embedded objects and drop them on the floor From 13184b27e7a1955ffeea92306ec0e04e535a1f0f Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Tue, 15 Mar 2016 02:26:50 -0400 Subject: [PATCH 04/11] fixesd an issue with some eyes --- code/modules/surgery/organs/subtypes/diona.dm | 18 +++++++++++++++++ .../surgery/organs/subtypes/machine.dm | 20 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/code/modules/surgery/organs/subtypes/diona.dm b/code/modules/surgery/organs/subtypes/diona.dm index 170f93ecddc..0447cbff139 100644 --- a/code/modules/surgery/organs/subtypes/diona.dm +++ b/code/modules/surgery/organs/subtypes/diona.dm @@ -194,6 +194,24 @@ parent_organ = "head" slot = "eyes" + +/obj/item/organ/internal/diona_receptor/remove(var/mob/living/user,special = 0) + if(!special) + owner.disabilities |= NEARSIGHTED + owner.sdisabilities |= BLIND + owner.eye_blind = 20 + owner.eye_blurry = 40 + ..() + +/obj/item/organ/internal/diona_receptor/surgeryize() + if(!owner) + return + owner.disabilities &= ~NEARSIGHTED + owner.sdisabilities &= ~BLIND + owner.eye_blurry = 0 + owner.eye_blind = 0 + + //TODO:Make absorb rads on insert /obj/item/organ/internal/liver/diona diff --git a/code/modules/surgery/organs/subtypes/machine.dm b/code/modules/surgery/organs/subtypes/machine.dm index 6ba6f5055db..12b3d8aded1 100644 --- a/code/modules/surgery/organs/subtypes/machine.dm +++ b/code/modules/surgery/organs/subtypes/machine.dm @@ -129,6 +129,26 @@ robotize() ..() + +/obj/item/organ/internal/optical_sensor/remove(var/mob/living/user,special = 0) + if(!special) + owner.disabilities |= NEARSIGHTED + owner.sdisabilities |= BLIND + owner.eye_blind = 20 + owner.eye_blurry = 40 + owner << "Error 404:Optical Sensors not found." + + ..() + +/obj/item/organ/internal/optical_sensor/surgeryize() + if(!owner) + return + owner.disabilities &= ~NEARSIGHTED + owner.sdisabilities &= ~BLIND + owner.eye_blurry = 0 + owner.eye_blind = 0 + + // Used for an MMI or posibrain being installed into a human. /obj/item/organ/internal/brain/mmi_holder name = "brain" From 4a2bd5cc1675f3ea54348495f178c72934a63161 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Thu, 17 Mar 2016 02:09:41 -0400 Subject: [PATCH 05/11] infection surgery edit --- code/modules/surgery/other.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index f5859bd6541..37192dbdc72 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -5,7 +5,7 @@ /datum/surgery/infection name = "external infection treatment/autopsy" - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/generic/cauterize) + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/cauterize) possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg") /datum/surgery/bleeding From bffb90d392ff1ab3c339c41f430c143434c0ce31 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 14:06:36 -0400 Subject: [PATCH 06/11] removes somethings... --- code/modules/mob/living/carbon/brain/MMI.dm | 3 --- code/modules/surgery/organs/organ_internal.dm | 3 --- 2 files changed, 6 deletions(-) diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index f5e832cdaa7..7aa4cd44554 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -30,9 +30,6 @@ user << "Somehow, this MMI still has a brain in it. Report this to the bug tracker." log_to_dd("[user] tried to stick a [O] into [src] in [get_area(src)], but the held brain variable wasn't cleared") return - if(B.status & ORGAN_DEAD) // As it stood, a brain would never become unviable for MMI usage. Perhaps we should keep it that way? - user << "This [B] is dead" - return for(var/mob/V in viewers(src, null)) V.show_message("[user] sticks \a [O] into \the [src].") brainmob = B.brainmob diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index bff48e21bc4..abe2107821e 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -20,8 +20,6 @@ if(!iscarbon(M) || owner == M) return - processing_objects -= src - var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) replaced.remove(M, special = 1) @@ -46,7 +44,6 @@ /obj/item/organ/internal/remove(mob/living/carbon/M, special = 0) owner = null - processing_objects |= src if(M) M.internal_organs -= src if(vital && !special) From fd65c752bf1543e86827025f814884e15720a076 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 20:32:36 -0400 Subject: [PATCH 07/11] OMG CONFLICT R GRIFFING ME HALP --- code/modules/surgery/organs/organ_internal.dm | 69 ++++++++++++++----- 1 file changed, 52 insertions(+), 17 deletions(-) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index abe2107821e..5ea3682a02f 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -9,20 +9,23 @@ var/slot vital = 0 var/organ_action_name = null + var/non_primary = 0 /obj/item/organ/internal/New(var/mob/living/carbon/holder) if(istype(holder)) insert(holder) ..() - -/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) +/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0, var/dont_remove_slot = 0) if(!iscarbon(M) || owner == M) return var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) - replaced.remove(M, special = 1) + if(dont_remove_slot) + non_primary = 1 + else + replaced.remove(M, special = 1) owner = M @@ -43,7 +46,6 @@ /obj/item/organ/internal/remove(mob/living/carbon/M, special = 0) owner = null - if(M) M.internal_organs -= src if(vital && !special) @@ -124,31 +126,64 @@ // Brain is defined in brain_item.dm. + /obj/item/organ/internal/heart name = "heart" icon_state = "heart-on" organ_tag = "heart" parent_organ = "chest" + slot = "heart" + origin_tech = "biotech=3" + var/beating = 1 dead_icon = "heart-off" - vital = 1 - var/beating = 0 + var/icon_base = "heart" /obj/item/organ/internal/heart/update_icon() if(beating) - icon_state = "heart-on" + icon_state = "[icon_base]-on" else - icon_state = "heart-off" - -/obj/item/organ/internal/heart/insert(mob/living/carbon/M, special = 0) - ..() - beating = 1 - update_icon() + icon_state = "[icon_base]-off" /obj/item/organ/internal/heart/remove(mob/living/carbon/M, special = 0) ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.stat == DEAD || H.heart_attack) + Stop() + return + if(!special) + H.heart_attack = 1 + spawn(120) - beating = 0 - update_icon() + if(!owner) + Stop() + +/obj/item/organ/internal/heart/attack_self(mob/user) + ..() + if(!beating) + Restart() + spawn(80) + if(!owner) + Stop() + + +/obj/item/organ/internal/heart/insert(mob/living/carbon/M, special = 0) + ..() + if(ishuman(M) && beating) + var/mob/living/carbon/human/H = M + if(H.heart_attack) + H.heart_attack = 0 + return + +/obj/item/organ/internal/heart/proc/Stop() + beating = 0 + update_icon() + return 1 + +/obj/item/organ/internal/heart/proc/Restart() + beating = 1 + update_icon() + return 1 /obj/item/organ/internal/heart/prepare_eat() var/obj/S = ..() @@ -346,7 +381,7 @@ /obj/item/organ/internal/shadowtumor/New() ..() - processing_objects |= src + processing_objects.Add(src) /obj/item/organ/internal/shadowtumor/Destroy() processing_objects.Remove(src) @@ -379,7 +414,7 @@ /obj/item/organ/internal/honktumor/New() ..() - processing_objects |= src + processing_objects.Add(src) /obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0) ..() From 83d3e392aeaea4e2899b3a59878e387e08bef566 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 20:40:54 -0400 Subject: [PATCH 08/11] Revert "OMG CONFLICT R GRIFFING ME HALP" This reverts commit fd65c752bf1543e86827025f814884e15720a076. --- code/modules/surgery/organs/organ_internal.dm | 67 +++++-------------- 1 file changed, 16 insertions(+), 51 deletions(-) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 5ea3682a02f..abe2107821e 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -9,23 +9,20 @@ var/slot vital = 0 var/organ_action_name = null - var/non_primary = 0 /obj/item/organ/internal/New(var/mob/living/carbon/holder) if(istype(holder)) insert(holder) ..() -/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0, var/dont_remove_slot = 0) + +/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) if(!iscarbon(M) || owner == M) return var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) - if(dont_remove_slot) - non_primary = 1 - else - replaced.remove(M, special = 1) + replaced.remove(M, special = 1) owner = M @@ -46,6 +43,7 @@ /obj/item/organ/internal/remove(mob/living/carbon/M, special = 0) owner = null + if(M) M.internal_organs -= src if(vital && !special) @@ -126,64 +124,31 @@ // Brain is defined in brain_item.dm. - /obj/item/organ/internal/heart name = "heart" icon_state = "heart-on" organ_tag = "heart" parent_organ = "chest" - slot = "heart" - origin_tech = "biotech=3" - var/beating = 1 dead_icon = "heart-off" - var/icon_base = "heart" + vital = 1 + var/beating = 0 /obj/item/organ/internal/heart/update_icon() if(beating) - icon_state = "[icon_base]-on" + icon_state = "heart-on" else - icon_state = "[icon_base]-off" - -/obj/item/organ/internal/heart/remove(mob/living/carbon/M, special = 0) - ..() - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.stat == DEAD || H.heart_attack) - Stop() - return - if(!special) - H.heart_attack = 1 - - spawn(120) - if(!owner) - Stop() - -/obj/item/organ/internal/heart/attack_self(mob/user) - ..() - if(!beating) - Restart() - spawn(80) - if(!owner) - Stop() - + icon_state = "heart-off" /obj/item/organ/internal/heart/insert(mob/living/carbon/M, special = 0) ..() - if(ishuman(M) && beating) - var/mob/living/carbon/human/H = M - if(H.heart_attack) - H.heart_attack = 0 - return - -/obj/item/organ/internal/heart/proc/Stop() - beating = 0 - update_icon() - return 1 - -/obj/item/organ/internal/heart/proc/Restart() beating = 1 update_icon() - return 1 + +/obj/item/organ/internal/heart/remove(mob/living/carbon/M, special = 0) + ..() + spawn(120) + beating = 0 + update_icon() /obj/item/organ/internal/heart/prepare_eat() var/obj/S = ..() @@ -381,7 +346,7 @@ /obj/item/organ/internal/shadowtumor/New() ..() - processing_objects.Add(src) + processing_objects |= src /obj/item/organ/internal/shadowtumor/Destroy() processing_objects.Remove(src) @@ -414,7 +379,7 @@ /obj/item/organ/internal/honktumor/New() ..() - processing_objects.Add(src) + processing_objects |= src /obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0) ..() From ff798ae9ecf79884a6cca07ca3a9d29b49040f17 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 20:53:28 -0400 Subject: [PATCH 09/11] This is the exact file from the master branch of the Repo --- code/modules/surgery/organs/organ_internal.dm | 69 ++++++++++++++----- 1 file changed, 52 insertions(+), 17 deletions(-) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index abe2107821e..5ea3682a02f 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -9,20 +9,23 @@ var/slot vital = 0 var/organ_action_name = null + var/non_primary = 0 /obj/item/organ/internal/New(var/mob/living/carbon/holder) if(istype(holder)) insert(holder) ..() - -/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0) +/obj/item/organ/internal/proc/insert(mob/living/carbon/M, special = 0, var/dont_remove_slot = 0) if(!iscarbon(M) || owner == M) return var/obj/item/organ/internal/replaced = M.get_organ_slot(slot) if(replaced) - replaced.remove(M, special = 1) + if(dont_remove_slot) + non_primary = 1 + else + replaced.remove(M, special = 1) owner = M @@ -43,7 +46,6 @@ /obj/item/organ/internal/remove(mob/living/carbon/M, special = 0) owner = null - if(M) M.internal_organs -= src if(vital && !special) @@ -124,31 +126,64 @@ // Brain is defined in brain_item.dm. + /obj/item/organ/internal/heart name = "heart" icon_state = "heart-on" organ_tag = "heart" parent_organ = "chest" + slot = "heart" + origin_tech = "biotech=3" + var/beating = 1 dead_icon = "heart-off" - vital = 1 - var/beating = 0 + var/icon_base = "heart" /obj/item/organ/internal/heart/update_icon() if(beating) - icon_state = "heart-on" + icon_state = "[icon_base]-on" else - icon_state = "heart-off" - -/obj/item/organ/internal/heart/insert(mob/living/carbon/M, special = 0) - ..() - beating = 1 - update_icon() + icon_state = "[icon_base]-off" /obj/item/organ/internal/heart/remove(mob/living/carbon/M, special = 0) ..() + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.stat == DEAD || H.heart_attack) + Stop() + return + if(!special) + H.heart_attack = 1 + spawn(120) - beating = 0 - update_icon() + if(!owner) + Stop() + +/obj/item/organ/internal/heart/attack_self(mob/user) + ..() + if(!beating) + Restart() + spawn(80) + if(!owner) + Stop() + + +/obj/item/organ/internal/heart/insert(mob/living/carbon/M, special = 0) + ..() + if(ishuman(M) && beating) + var/mob/living/carbon/human/H = M + if(H.heart_attack) + H.heart_attack = 0 + return + +/obj/item/organ/internal/heart/proc/Stop() + beating = 0 + update_icon() + return 1 + +/obj/item/organ/internal/heart/proc/Restart() + beating = 1 + update_icon() + return 1 /obj/item/organ/internal/heart/prepare_eat() var/obj/S = ..() @@ -346,7 +381,7 @@ /obj/item/organ/internal/shadowtumor/New() ..() - processing_objects |= src + processing_objects.Add(src) /obj/item/organ/internal/shadowtumor/Destroy() processing_objects.Remove(src) @@ -379,7 +414,7 @@ /obj/item/organ/internal/honktumor/New() ..() - processing_objects |= src + processing_objects.Add(src) /obj/item/organ/internal/honktumor/insert(mob/living/carbon/M, special = 0) ..() From b9fd5042f62ceb392c7a20ee8079d7abfa0bb5f6 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 21:13:29 -0400 Subject: [PATCH 10/11] look ma, hands.... --- code/modules/surgery/other.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 37192dbdc72..1d28d404b92 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -6,12 +6,12 @@ /datum/surgery/infection name = "external infection treatment/autopsy" steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/cauterize) - possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg") + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand") /datum/surgery/bleeding name = "internal bleeding" steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders,/datum/surgery_step/generic/retract_skin,/datum/surgery_step/fix_vein,/datum/surgery_step/generic/cauterize) - possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg") + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand") /datum/surgery/bleeding/can_start(mob/user, mob/living/carbon/target) if(ishuman(target)) From ac5968fb84f3550ebc5228fce52efc2899535c95 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Fri, 18 Mar 2016 21:25:31 -0400 Subject: [PATCH 11/11] I FORGOT THE FEEET! --- code/modules/surgery/other.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 1d28d404b92..42c35dd5106 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -6,12 +6,12 @@ /datum/surgery/infection name = "external infection treatment/autopsy" steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/cauterize) - possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand") + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand", "r_foot", "l_foot") /datum/surgery/bleeding name = "internal bleeding" steps = list(/datum/surgery_step/generic/cut_open,/datum/surgery_step/generic/clamp_bleeders,/datum/surgery_step/generic/retract_skin,/datum/surgery_step/fix_vein,/datum/surgery_step/generic/cauterize) - possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand") + possible_locs = list("chest","head","groin", "l_arm", "r_arm", "l_leg", "r_leg", "r_hand", "l_hand", "r_foot", "l_foot") /datum/surgery/bleeding/can_start(mob/user, mob/living/carbon/target) if(ishuman(target))