Medical Hoopery

Added eyes as an internal organ, removed the eye-stat var on mobs and changed it to properly direct it to eye damage. Altered all reference.

Updated the sleeper to allow for ejection of the beakers and occupants in panel.

Updated the body scanner to check for prosthetics/mechanized organs, and inform the individual of the blind disability.

Laid the groundwork for mechanical and assisted internal organs.

Groundwork for chemical: Peridaxon, a chemical that allows for the slow regeneration from organ damage.
This commit is contained in:
Nanai
2013-11-14 12:40:30 -05:00
parent fb82c376ea
commit cba1a9585d
20 changed files with 247 additions and 94 deletions
+12 -2
View File
@@ -36,12 +36,15 @@
user.visible_message("\blue [user] has separated the corneas on [target]'s eyes with \the [tool]." , \
"\blue You have separated the corneas on [target]'s eyes with \the [tool].",)
target.op_stage.eyes = 1
target.blinded += 1.5
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, slicing [target]'s eyes wth \the [tool]!" , \
"\red Your hand slips, slicing [target]'s eyes wth \the [tool]!" )
affected.createwound(CUT, 10)
eyes.take_damage(5, 1)
/datum/surgery_step/eye/lift_eyes
allowed_tools = list(
@@ -66,10 +69,12 @@
target.op_stage.eyes = 2
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, damaging [target]'s eyes with \the [tool]!", \
"\red Your hand slips, damaging [target]'s eyes with \the [tool]!")
target.apply_damage(10, BRUTE, affected)
eyes.take_damage(5, 1)
/datum/surgery_step/eye/mend_eyes
allowed_tools = list(
@@ -95,10 +100,12 @@
target.op_stage.eyes = 3
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, stabbing \the [tool] into [target]'s eye!", \
"\red Your hand slips, stabbing \the [tool] into [target]'s eye!")
target.apply_damage(10, BRUTE, affected)
eyes.take_damage(5, 1)
/datum/surgery_step/eye/cauterize
allowed_tools = list(
@@ -119,16 +126,19 @@
"You are beginning to cauterize the incision around [target]'s eyes with \the [tool].")
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
user.visible_message("\blue [user] cauterizes the incision around [target]'s eyes with \the [tool].", \
"\blue You cauterize the incision around [target]'s eyes with \the [tool].")
if (target.op_stage.eyes == 3)
target.disabilities &= ~NEARSIGHTED
target.sdisabilities &= ~BLIND
target.eye_stat = 0
eyes.damage -= 15
target.op_stage.eyes = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/eyes/eyes = target.internal_organs["eyes"]
var/datum/organ/external/affected = target.get_organ(target_zone)
user.visible_message("\red [user]'s hand slips, searing [target]'s eyes with \the [tool]!", \
"\red Your hand slips, searing [target]'s eyes with \the [tool]!")
target.apply_damage(5, BURN, affected)
target.eye_stat += 5
eyes.take_damage(5, 1)
+60 -5
View File
@@ -214,8 +214,12 @@
user.visible_message("[user] starts mending the rupture in [target]'s lungs with \the [tool].", \
"You start mending the rupture in [target]'s lungs with \the [tool]." )
if(heart.damage > 0)
user.visible_message("[user] starts mending the bruises on [target]'s heart with \the [tool].", \
"You start mending the bruises on [target]'s heart with \the [tool]." )
if(heart.robotic < 2)
user.visible_message("[user] starts mending the bruises on [target]'s heart with \the [tool].", \
"You start mending the bruises on [target]'s heart with \the [tool]." )
if(heart.robotic == 2)
user.visible_message("\blue [user] attempts to repair [target]'s mechanical heart with \the [tool]...", \
"\blue You attempt to repair [target]'s heart with \the [tool]...")
if(liver.damage > 0)
user.visible_message("[user] starts mending the bruises on [target]'s liver with \the [tool].", \
"You start mending the bruises on [target]'s liver with \the [tool]." )
@@ -237,9 +241,13 @@
lungs.damage = 0
if(heart.damage > 0)
user.visible_message("\blue [user] treats the bruises on [target]'s heart with \the [tool].", \
"\blue You treat the bruises on [target]'s heart with \the [tool]." )
heart.damage = 0
if(heart.robotic == 2)
user.visible_message("\blue [user] pokes [target]'s mechanical heart with \the [tool].", \
"\red [target]'s heart is not organic, you cannot operate on it with \the [tool]!")
else
user.visible_message("\blue [user] treats the bruises on [target]'s heart with \the [tool].", \
"\blue You treat the bruises on [target]'s heart with \the [tool]." )
heart.damage = 0
if(liver.damage > 0)
user.visible_message("\blue [user] treats the bruises on [target]'s liver with \the [tool].", \
@@ -256,3 +264,50 @@
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
"\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
affected.createwound(CUT, 20)
/datum/surgery_step/ribcage/fix_chest_internal_robot //For artificial organs
allowed_tools = list(
/obj/item/stack/nanopaste = 100, \
/obj/item/weapon/bonegel = 60, \
/obj/item/weapon/screwdriver = 30, \
)
min_duration = 70
max_duration = 90
can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/is_chest_organ_damaged = 0
var/datum/organ/external/chest/chest = target.get_organ("chest")
for(var/datum/organ/internal/I in chest.internal_organs) if(I.damage > 0)
is_chest_organ_damaged = 1
break
return ..() && is_chest_organ_damaged && target.op_stage.ribcage == 2
begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
if(heart.damage > 0)
if(heart.robotic == 2)
user.visible_message("[user] starts mending the mechanisms on [target]'s heart with \the [tool].", \
"You start mending the mechanisms on [target]'s heart with \the [tool]." )
target.custom_pain("The pain in your chest is living hell!",1)
..()
end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
if(heart.damage > 0)
user.visible_message("\blue [user] repairs [target]'s heart with \the [tool].", \
"\blue You repair [target]'s heart with \the [tool]." )
heart.damage = 0
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/internal/heart/heart = target.internal_organs["heart"]
user.visible_message("\red [user]'s hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!!" , \
"\red Your hand slips, smearing [tool] in the incision in [target]'s heart, gumming it up!")
heart.take_damage(5, 0)
target.adjustToxLoss(5)
//////////////////////////////////////////////////////////////////
// HEART SURGERY //
//////////////////////////////////////////////////////////////////