Life Support Enabled Operating Table - Update

* Gives carbon/humans the proc/isonlifesupport() to replace the constant checks done in other areas. Returns 1 if the target is on life support, 0 if is not.
* Adds support for removing brains from mobs, without them dying. The installation of a brain into a body is still impossible at this time (looking to fix that, somehow).
* Adds an internal log to the advanced operating table, which keeps track of just about everything important done to it. This log can be viewed and wiped from the operating computer.
* Adds a blood syphon option, which becomes available when the advanced operating table gets emagged.
This commit is contained in:
skull132
2015-10-31 13:55:31 +02:00
parent 287ec1bb00
commit 83b766de34
9 changed files with 422 additions and 290 deletions
+1 -7
View File
@@ -67,13 +67,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
if(species && species.has_organ["heart"])
var/datum/organ/internal/heart/heart = internal_organs_by_name["heart"]
// Before we do that, we check for lifesupport.
var/onlifesupport = 0
if (buckled && istype(buckled, /obj/machinery/optable/lifesupport))
var/obj/machinery/optable/lifesupport/A = buckled
onlifesupport = A.onlifesupport()
if (!onlifesupport)
if (!isonlifesupport())
if(!heart)
blood_volume = 0
else if(heart.damage > 1 && heart.damage < heart.min_bruised_damage)
+2 -4
View File
@@ -42,10 +42,8 @@
/datum/organ/internal/process()
//Check if we're on lifesupport, and whether or not organs should be processing.
if (owner.buckled && istype(owner.buckled, /obj/machinery/optable/lifesupport))
var/obj/machinery/optable/lifesupport/A = owner.buckled
if (A.onlifesupport())
return 1
if (owner.isonlifesupport())
return 1
//Process infections
if (robotic >= 2 || (owner.species && owner.species.flags & IS_PLANT)) //TODO make robotic internal and external organs separate types of organ instead of a flag
+3 -1
View File
@@ -191,7 +191,9 @@
user.attack_log += "\[[time_stamp()]\]<font color='red'> removed a vital organ ([src]) from [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)])</font>"
target.attack_log += "\[[time_stamp()]\]<font color='orange'> had a vital organ ([src]) removed by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])</font>"
msg_admin_attack("[user.name] ([user.ckey]) removed a vital organ ([src]) from [target.name] ([target.ckey]) (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
target.death()
if (!target.isonlifesupport())
target.death()
/obj/item/organ/proc/exposed_to_the_world() // this is only useful for organs that change when actually removed from the body