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