mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 10:03:50 +01:00
Merge pull request #9190 from Fox-McCloud/build-the-boop
Adds Buildable Integrated Robotic Chassis & Robotic Limb Surgery
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user