diff --git a/code/game/gamemodes/changeling/powers/augmented_eyesight.dm b/code/game/gamemodes/changeling/powers/augmented_eyesight.dm index 832973d4ce6..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) @@ -43,6 +42,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() ..() @@ -75,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/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/mob/living/living.dm b/code/modules/mob/living/living.dm index 1dceb6a20e8..efe21341a66 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -385,7 +385,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.dm b/code/modules/surgery/organs/organ.dm index 11bbab9d7e1..0335acd1f65 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 ||(owner && owner.species && (owner.species.flags & IS_PLANT))) germ_level = 0 return 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" diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 004cea35e59..42c35dd5106 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/cauterize) + 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") + 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)) @@ -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