Removes redundant surgery for brain and eye repair, now covered by organ repair in general.

Attempted to limit regular surgery to non-robotic limbs and added surgical steps for robotic limbs.
Readded checks for smoking reagent transfer.
Fixes, oversights, tweaks with IPC.
Added some reagent bypassing for NO_BLOOD and some checks to various affect_touch() calls for NO_SCAN/IPC.
Added prosthetic-scanning functionality to cyborg analyzer.
Added prosthetic analysis to the robot analyzer.
Allowed people with internal cells to charge in robot chargers (IPCs).
This commit is contained in:
Zuhayr
2015-05-25 14:49:57 +09:30
parent aa97778f0a
commit f0006ec6bf
34 changed files with 729 additions and 423 deletions
+1 -1
View File
@@ -214,7 +214,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
//Transfers blood from reagents to vessel, respecting blood types compatability.
/mob/living/carbon/human/inject_blood(var/datum/reagent/blood/injected, var/amount)
if(species && species.flags & NO_BLOOD)
if(species.flags & NO_BLOOD)
reagents.add_reagent("blood", amount, injected.data)
reagents.update_total()
return
+1 -1
View File
@@ -349,7 +349,7 @@ This function completely restores a damaged organ to perfect condition.
//Determines if we even need to process this organ.
/obj/item/organ/external/proc/need_process()
if(status && status != ORGAN_ROBOT) // If it's robotic, that's fine it will have a status.
if(status & (ORGAN_CUT_AWAY|ORGAN_GAUZED|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_SPLINTED|ORGAN_DEAD|ORGAN_MUTATED))
return 1
if(brute_dam || burn_dam)
return 1
+79 -5
View File
@@ -1,6 +1,15 @@
// IPC limbs.
/obj/item/organ/external/head/ipc
dislocated = -1
can_intake_reagents = 0
encased = null
/obj/item/organ/external/head/ipc/New()
robotize("Morpheus Cyberkinetics")
..()
/obj/item/organ/external/chest/ipc
dislocated = -1
encased = null
/obj/item/organ/external/chest/ipc/New()
robotize("Morpheus Cyberkinetics")
..()
@@ -59,9 +68,74 @@
robotize("Morpheus Cyberkinetics")
..()
/obj/item/organ/external/head/ipc
dislocated = -1
can_intake_reagents = 0
/obj/item/organ/external/head/ipc/New()
robotize("Morpheus Cyberkinetics")
/obj/item/organ/cell
name = "microbattery"
desc = "A small, powerful cell for use in fully prosthetic bodies."
icon = 'icons/obj/power.dmi'
icon_state = "scell"
organ_tag = "cell"
parent_organ = "chest"
vital = 1
/obj/item/organ/cell/New()
robotize()
..()
/obj/item/organ/cell/replaced()
..()
// This is very ghetto way of rebooting an IPC. TODO better way.
if(owner && owner.stat == DEAD)
owner.stat = 0
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
// Used for an MMI or posibrain being installed into a human.
/obj/item/organ/mmi_holder
name = "brain"
organ_tag = "brain"
parent_organ = "head"
vital = 1
var/obj/item/device/mmi/stored_mmi
/obj/item/organ/mmi_holder/proc/update_from_mmi()
if(!stored_mmi)
return
name = stored_mmi.name
desc = stored_mmi.desc
icon = stored_mmi.icon
icon_state = stored_mmi.icon_state
/obj/item/organ/mmi_holder/removed(var/mob/living/user)
if(stored_mmi)
stored_mmi.loc = get_turf(src)
if(owner.mind)
owner.mind.transfer_to(stored_mmi.brainmob)
..()
var/mob/living/holder_mob = loc
if(istype(holder_mob))
holder_mob.drop_from_inventory(src)
qdel(src)
/obj/item/organ/mmi_holder/New()
..()
// This is very ghetto way of rebooting an IPC. TODO better way.
spawn(1)
if(owner && owner.stat == DEAD)
owner.stat = 0
owner.visible_message("<span class='danger'>\The [owner] twitches visibly!</span>")
/obj/item/organ/mmi_holder/posibrain/New()
robotize()
stored_mmi = new /obj/item/device/mmi/digital/posibrain(src)
..()
spawn(1)
if(owner)
stored_mmi.name = "positronic brain ([owner.name])"
stored_mmi.brainmob.real_name = owner.name
stored_mmi.brainmob.name = stored_mmi.brainmob.real_name
stored_mmi.icon_state = "posibrain-occupied"
update_from_mmi()
else
stored_mmi.loc = get_turf(src)
qdel(src)