Merge pull request #9190 from Fox-McCloud/build-the-boop

Adds Buildable Integrated Robotic Chassis & Robotic Limb Surgery
This commit is contained in:
Crazy Lemon
2018-07-10 22:23:28 -07:00
committed by GitHub
8 changed files with 135 additions and 28 deletions
+12 -10
View File
@@ -166,7 +166,8 @@
stored_mmi.forceMove(get_turf(owner))
stored_mmi = null
..()
qdel(src)
if(!QDELETED(src))
qdel(src)
/obj/item/organ/internal/brain/mmi_holder/proc/update_from_mmi()
if(!stored_mmi)
@@ -182,12 +183,13 @@
stored_mmi = new /obj/item/mmi/posibrain/ipc(src)
..()
spawn(1)
if(owner)
stored_mmi.name = "positronic brain ([owner.real_name])"
stored_mmi.brainmob.real_name = owner.real_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)
if(!QDELETED(src))
if(owner)
stored_mmi.name = "positronic brain ([owner.real_name])"
stored_mmi.brainmob.real_name = owner.real_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)
+56
View File
@@ -541,3 +541,59 @@
user.visible_message("<span class='warning'> [user]'s hand slips!</span>", \
"<span class='warning'> Your hand slips!</span>")
return 0
/datum/surgery/cybernetic_customization
name = "Cybernetic Appearance Customization"
steps = list(/datum/surgery_step/robotics/external/unscrew_hatch, /datum/surgery_step/robotics/external/customize_appearance)
possible_locs = list("head", "chest", "l_arm", "r_arm", "r_leg", "l_leg")
requires_organic_bodypart = FALSE
/datum/surgery/cybernetic_customization/can_start(mob/user, mob/living/carbon/human/target)
if(ishuman(target))
var/obj/item/organ/external/affected = target.get_organ(user.zone_sel.selecting)
if(!affected)
return FALSE
if(!(affected.status & ORGAN_ROBOT))
return FALSE
return TRUE
/datum/surgery_step/robotics/external/customize_appearance
name = "reprogram limb"
allowed_tools = list(/obj/item/multitool = 100)
time = 48
/datum/surgery_step/robotics/external/customize_appearance/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
if(!affected)
return FALSE
return TRUE
/datum/surgery_step/robotics/external/customize_appearance/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("[user] begins to reprogram the appearance of [target]'s [affected.name] with [tool]." , \
"You begin to reprogram the appearance of [target]'s [affected.name] with [tool].")
..()
/datum/surgery_step/robotics/external/customize_appearance/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/chosen_appearance = input(user, "Select the company appearance for this limb.", "Limb Company Selection") as null|anything in selectable_robolimbs
if(!chosen_appearance)
return FALSE
var/obj/item/organ/external/affected = target.get_organ(target_zone)
affected.robotize(chosen_appearance, convert_all = FALSE)
if(istype(affected, /obj/item/organ/external/head))
var/obj/item/organ/external/head/head = affected
head.h_style = "Bald" // nearly all the appearance changes for heads are non-monitors; we want to get rid of a floating screen
target.update_hair()
target.update_body()
target.updatehealth()
target.UpdateDamageIcon()
user.visible_message("<span class='notice'> [user] reprograms the appearance of [target]'s [affected.name] with [tool].</span>", \
"<span class='notice'> You reprogram the appearance of [target]'s [affected.name] with [tool].</span>")
return TRUE
/datum/surgery_step/robotics/external/customize_appearance/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
var/obj/item/organ/external/affected = target.get_organ(target_zone)
user.visible_message("<span class='warning'> [user]'s [tool.name] slips, failing to reprogram [target]'s [affected.name].</span>",
"<span class='warning'> Your [tool.name] slips, failing to reprogram [target]'s [affected.name].</span>")
return FALSE