Make FBPs Constructable

Print 'em out, slap an MMI or Posibrain in. They come from a new machine, the Prosthetics Fabricator. You can order license discs from cargo to print the proprietary limbs. Making FBPs requires a bit of research as well, otherwise you only get arms/legs. Also requires a bit of plasteel to make the critical parts. Mostly just need every limb, plus eyes. Torso comes with the snowflakey FBP battery.

Also adds an FBP 'self-diagnostics' verb. More vague than an analyzer.

**This adds a machine that needs to be placed on the map. "/obj/machinery/pros_fabricator"**

Personally, I would replace the right-side exosuit fab with it. I can add this to my PR but I'm unsure how you guys feel about non-devs submitting map changes.
This commit is contained in:
Arokha Sieyes
2016-05-30 02:13:55 -04:00
parent 288ae3d274
commit 05f8a69821
20 changed files with 828 additions and 251 deletions
@@ -74,6 +74,7 @@
/obj/item/device/mmi/digital/posibrain/proc/reset_search() //We give the players sixty seconds to decide, then reset the timer.
if(src.brainmob && src.brainmob.key) return
world.log << "Resetting Posibrain: [brainmob][brainmob ? ", [brainmob.key]" : ""]"
src.searching = 0
icon_state = "posibrain"
@@ -36,12 +36,13 @@
animate_tail_stop()
//Handle brain slugs.
var/obj/item/organ/external/head = get_organ(BP_HEAD)
var/obj/item/organ/external/Hd = get_organ(BP_HEAD)
var/mob/living/simple_animal/borer/B
for(var/I in head.implants)
if(istype(I,/mob/living/simple_animal/borer))
B = I
if(Hd)
for(var/I in Hd.implants)
if(istype(I,/mob/living/simple_animal/borer))
B = I
if(B)
if(!B.ckey && ckey && B.controlling)
B.ckey = ckey
@@ -64,6 +64,7 @@
if(synthetic) return synthetic //Your synthetic-ness is not going away
var/obj/item/organ/external/T = organs_by_name[BP_TORSO]
if(T && T.robotic >= ORGAN_ROBOT)
src.verbs += /mob/living/carbon/human/proc/self_diagnostics
var/datum/robolimb/R = all_robolimbs[T.model]
synthetic = R
return synthetic
@@ -145,4 +145,27 @@
qdel(src)
/mob/living/carbon/human/proc/self_diagnostics()
set name = "Self-Diagnostics"
set desc = "Run an internal self-diagnostic to check for damage."
set category = "IC"
if(stat == DEAD) return
src << "<span class='notice'>Performing self-diagnostic, please wait...</span>"
sleep(50)
var/output = "<span class='notice'>Self-Diagnostic Results:\n"
for(var/obj/item/organ/external/EO in organs)
if(EO.brute_dam || EO.burn_dam)
output += "[EO.name] - <span class='warning'>[EO.burn_dam + EO.brute_dam > ROBOLIMB_REPAIR_CAP ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[EO.name] - <span style='color:green;'>OK</span>\n"
for(var/obj/item/organ/IO in internal_organs)
if(IO.damage)
output += "[IO.name] - <span class='warning'>[IO.damage > 10 ? "Heavy Damage" : "Light Damage"]</span>\n"
else
output += "[IO.name] - <span style='color:green;'>OK</span>\n"
src << output