diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 4cb92a0780..dd2843571f 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -8,16 +8,27 @@ w_class = ITEMSIZE_SMALL matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000) var/obj/item/weapon/implant/imp = null + var/active = 1 /obj/item/weapon/implanter/attack_self(var/mob/user) + active = !active + to_chat(user, "You [active ? "" : "de"]activate \the [src].") + update() + +/obj/item/weapon/implanter/verb/remove_implant(var/mob/user) + set category = "Object" + set name = "Remove Implant" + set src in usr + if(!imp) - return ..() + return imp.loc = get_turf(src) user.put_in_hands(imp) - user << "You remove \the [imp] from \the [src]." + to_chat(user, "You remove \the [imp] from \the [src].") name = "implanter" imp = null update() + return /obj/item/weapon/implanter/proc/update() @@ -25,39 +36,42 @@ src.icon_state = "implanter1" else src.icon_state = "implanter0" + src.icon_state += "_[active]" return /obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob) if (!istype(M, /mob/living/carbon)) return - if (user && src.imp) - M.visible_message("[user] is attemping to implant [M].") + if(active) + if (imp) + M.visible_message("[user] is attemping to implant [M].") - user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) - user.do_attack_animation(M) + user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) + user.do_attack_animation(M) - var/turf/T1 = get_turf(M) - if (T1 && ((M == user) || do_after(user, 50))) - if(user && M && (get_turf(M) == T1) && src && src.imp) - M.visible_message("[M] has been implanted by [user].") + var/turf/T1 = get_turf(M) + if (T1 && ((M == user) || do_after(user, 50))) + if(user && M && (get_turf(M) == T1) && src && src.imp) + M.visible_message("[M] has been implanted by [user].") - admin_attack_log(user, M, "Implanted using \the [src.name] ([src.imp.name])", "Implanted with \the [src.name] ([src.imp.name])", "used an implanter, [src.name] ([src.imp.name]), on") + admin_attack_log(user, M, "Implanted using \the [src.name] ([src.imp.name])", "Implanted with \the [src.name] ([src.imp.name])", "used an implanter, [src.name] ([src.imp.name]), on") - if(src.imp.implanted(M)) - src.imp.loc = M - src.imp.imp_in = M - src.imp.implanted = 1 - if (ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - affected.implants += src.imp - imp.part = affected + if(src.imp.implanted(M)) + src.imp.loc = M + src.imp.imp_in = M + src.imp.implanted = 1 + if (ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) + affected.implants += src.imp + imp.part = affected - BITSET(H.hud_updateflag, IMPLOYAL_HUD) - - src.imp = null - update() + BITSET(H.hud_updateflag, IMPLOYAL_HUD) + src.imp = null + update() + else + to_chat(user, "You need to activate \the [src.name] first.") return /obj/item/weapon/implanter/loyalty @@ -112,19 +126,26 @@ var/obj/item/weapon/implant/compressed/c = imp if (!c) return if (c.scanned == null) - user << "Please scan an object with the implanter first." + to_chat(user, "Please scan an object with the implanter first.") return ..() /obj/item/weapon/implanter/compressed/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return + if(!active) + to_chat(user, "Activate \the [src.name] first.") + return if(istype(A,/obj/item) && imp) var/obj/item/weapon/implant/compressed/c = imp if (c.scanned) - user << "Something is already scanned inside the implant!" + to_chat(user, "Something is already scanned inside the implant!") return c.scanned = A + if(istype(A, /obj/item/weapon/storage)) + to_chat(user, "You can't store \the [A.name] in this!") + c.scanned = null + return if(istype(A.loc,/mob/living/carbon/human)) var/mob/living/carbon/human/H = A.loc H.remove_from_mob(A) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 563285ff05..61b07d1ecf 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ