From 7df7dcc3988e78ee02be043c2f9bd7db2daa0f9a Mon Sep 17 00:00:00 2001 From: jack-fractal Date: Thu, 13 Aug 2015 15:46:55 -0400 Subject: [PATCH] Magnetic Gripper for Engineering Cyborg This also modifies the gripper to display the name of the object held, and the icon for the object held as well (though it's showing as an underlay rather than an overlay because of the way the backpack works). --- .../machinery/doors/airlock_electronics.dm | 2 +- .../living/silicon/robot/drone/drone_items.dm | 34 ++++++++++++++----- .../mob/living/silicon/robot/robot_modules.dm | 7 ++-- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index fe9e8cf1..82b680b3 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -16,7 +16,7 @@ var/locked = 1 attack_self(mob/user as mob) - if (!ishuman(user) && !istype(user,/mob/living/silicon/robot/drone)) + if (!ishuman(user) && !istype(user,/mob/living/silicon/robot)) return ..(user) var/mob/living/carbon/human/H = user diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index 18adeccc..84bbeaf3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -49,7 +49,7 @@ set name = "Drop Item" set desc = "Release an item from your magnetic gripper." - set category = "Drone" + set category = "Robot Commands" if(!wrapped) //There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z @@ -64,14 +64,14 @@ src.loc << "\red You drop \the [wrapped]." wrapped.loc = get_turf(src) wrapped = null - //update_icon() + update_wrapped() /obj/item/weapon/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) return /obj/item/weapon/gripper/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, proximity, params) - if(!target || !proximity) //Target is invalid or we are not adjacent. + update_wrapped() return //There's some weirdness with items being lost inside the arm. Trying to fix all cases. ~Z @@ -93,6 +93,7 @@ wrapped.loc = src else wrapped = null + update_wrapped() return else if(istype(target,/obj/item)) //Check that we're not pocketing a mob. @@ -115,27 +116,42 @@ user << "You collect \the [I]." I.loc = src wrapped = I + update_wrapped() return else user << "\red Your gripper cannot hold \the [target]." - + update_wrapped() else if(istype(target,/obj/machinery/power/apc)) var/obj/machinery/power/apc/A = target if(A.opened) if(A.cell) - wrapped = A.cell - A.cell.add_fingerprint(user) A.cell.updateicon() A.cell.loc = src A.cell = null - A.charging = 0 A.update_icon() - user.visible_message("\red [user] removes the power cell from [A]!", "You remove the power cell.") - + update_wrapped() + +/obj/item/weapon/gripper/proc/update_wrapped() + update_name() + update_overlay() + + +/obj/item/weapon/gripper/proc/update_name() + name = initial(name) + if (wrapped) + name += " ([wrapped])" + + +/obj/item/weapon/gripper/proc/update_overlay() + overlays.Cut() + if (wrapped) + overlays+=wrapped + + //TODO: Matter decompiler. /obj/item/weapon/matter_decompiler diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index e5e529ce..aedf76a9 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -231,10 +231,8 @@ src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/device/flash(src) src.modules += new /obj/item/borg/sight/meson(src) - src.emag = new /obj/item/borg/stun(src) src.modules += new /obj/item/weapon/rcd/borg(src) src.modules += new /obj/item/weapon/extinguisher(src) -// src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/weapon/weldingtool/largetank(src) src.modules += new /obj/item/weapon/screwdriver(src) src.modules += new /obj/item/weapon/wrench(src) @@ -244,7 +242,10 @@ src.modules += new /obj/item/device/t_scanner(src) src.modules += new /obj/item/device/analyzer(src) src.modules += new /obj/item/taperoll/engineering(src) - + src.modules += new /obj/item/weapon/gripper(src) + + src.emag = new /obj/item/borg/stun(src) + var/obj/item/stack/sheet/metal/cyborg/M = new /obj/item/stack/sheet/metal/cyborg(src) M.amount = 50 src.modules += M