From df362db8af86a44b2a9c2fafb20fecf269981472 Mon Sep 17 00:00:00 2001 From: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Wed, 4 Jun 2025 14:15:57 +0100 Subject: [PATCH] Gives Medical Cyborgs a Holo Stretcher Upgrade (#29352) * creation * Update code/game/objects/items/robot/robot_upgrades.dm Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com> --------- Signed-off-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --- .../objects/items/robot/robot_upgrades.dm | 14 ++++ .../structures/stool_bed_chair_nest/bed.dm | 79 +++++++++++++------ .../designs/mechfabricator_designs.dm | 10 +++ 3 files changed, 78 insertions(+), 25 deletions(-) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 8949a55103f..ec0d2af01c4 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -422,6 +422,20 @@ items_to_add = list(/obj/item/kitchen/knife/cheese) items_to_replace = list(/obj/item/rsf = /obj/item/rsf/executive) +/***********************/ +// MARK: Medical +/***********************/ + +/obj/item/borg/upgrade/holo_stretcher + name = "holo stretcher rack upgrade" + desc = "An upgrade that allows medical cyborgs to carry holo stretchers in addition to basic roller beds." + icon = 'icons/obj/rollerbed.dmi' + icon_state = "holo_retracted" + origin_tech = "magnets=3;biotech=4;powerstorage=3" + require_module = TRUE + module_type = /obj/item/robot_module/medical + items_to_replace = list(/obj/item/roller_holder = /obj/item/roller_holder/holo) + /***********************/ // MARK: Syndicate /***********************/ diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 2aa7c0db033..d1053079951 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -190,30 +190,27 @@ icon = 'icons/obj/rollerbed.dmi' icon_state = "folded" w_class = WEIGHT_CLASS_BULKY + new_attack_chain = TRUE var/extended = /obj/structure/bed/roller -/obj/item/roller/attack_self__legacy__attackchain(mob/user) +/obj/item/roller/activate_self(mob/user) + if(..()) + return + var/obj/structure/bed/roller/R = new extended(user.loc) R.add_fingerprint(user) qdel(src) -/obj/item/roller/afterattack__legacy__attackchain(atom/target, mob/user, proximity, params) - if(!proximity) - return - if(isturf(target)) - var/turf/T = target - if(!T.density) - var/obj/structure/bed/roller/R = new extended(T) - R.add_fingerprint(user) - qdel(src) +/obj/item/roller/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(!isturf(target)) + return ..() -/obj/item/roller/attackby__legacy__attackchain(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/roller_holder)) - var/obj/item/roller_holder/RH = W - if(!RH.held) - user.visible_message("[user] collects \the [name].", "You collect \the [name].") - forceMove(RH) - RH.held = src + var/turf/T = target + if(!T.density) + var/obj/structure/bed/roller/R = new extended(T) + R.add_fingerprint(user) + qdel(src) + return ITEM_INTERACT_COMPLETE /obj/item/roller/holo name = "holo stretcher" @@ -223,9 +220,6 @@ origin_tech = "magnets=3;biotech=4;powerstorage=3" extended = /obj/structure/bed/roller/holo -/obj/item/roller/holo/attackby__legacy__attackchain(obj/item/W, mob/user, params) - return - /obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location) if(over_object == usr && Adjacent(usr) && (in_range(src, usr) || usr.contents.Find(src))) if(!ishuman(usr) || usr.incapacitated()) @@ -243,22 +237,57 @@ desc = "A rack for carrying a collapsed roller bed." icon = 'icons/obj/rollerbed.dmi' icon_state = "folded" + new_attack_chain = TRUE var/obj/item/roller/held + var/obj/carry_holo = FALSE /obj/item/roller_holder/New() ..() held = new /obj/item/roller(src) -/obj/item/roller_holder/attack_self__legacy__attackchain(mob/user as mob) - if(!held) - to_chat(user, "The rack is empty.") +/obj/item/roller_holder/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(!istype(target, /obj/item/roller)) + return ..() + + if(istype(target, /obj/item/roller/holo) && !carry_holo) + return ITEM_INTERACT_COMPLETE + + if(held) + to_chat(user, "[src] is already full!") + return ITEM_INTERACT_COMPLETE + + var/obj/item/roller/bed = target + user.visible_message( + "[user] collects [target].", + "You collect [target]." + ) + bed.forceMove(src) + held = target + return ITEM_INTERACT_COMPLETE + +/obj/item/roller_holder/activate_self(mob/user) + if(..()) return - to_chat(user, "You deploy the roller bed.") - var/obj/structure/bed/roller/R = new /obj/structure/bed/roller(user.loc) + if(!held) + to_chat(user, "[src] is empty!") + return + + to_chat(user, "You deploy [held].") + var/obj/structure/bed/roller/R = new held.extended(user.loc) R.add_fingerprint(user) QDEL_NULL(held) +/obj/item/roller_holder/holo + name = "holo stretcher rack" + desc = "A rack for carrying an undeployed holo stretcher. It can also support a basic roller bed in a pinch." + icon_state = "holo_retracted" + carry_holo = TRUE + +/obj/item/roller_holder/holo/New() + ..() + held = new /obj/item/roller/holo(src) + /* * Dog beds */ diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index d8d76c51204..042136fd847 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1323,6 +1323,16 @@ construction_time = 12 SECONDS category = list("Cyborg Upgrades") +/datum/design/borg_upgrade_holo_stretcher + name = "Cyborg Upgrade (Holo Stretcher Rack Upgrade)" + id = "borg_upgrade_holo_stretcher" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/holo_stretcher + req_tech = list("magnets" = 5, "powerstorage" = 4) + materials = list(MAT_METAL = 1000, MAT_SILVER = 500, MAT_GLASS = 500, MAT_DIAMOND = 200) + construction_time = 12 SECONDS + category = list("Cyborg Upgrades") + // IPC /datum/design/ipc_head