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