diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index 14096425500..5e500ed5d1c 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -67,7 +67,7 @@
if ((O.client && !( O.blinded )))
O << "\red [src] has been scanned by [user] with the [W]"
else
- if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) &&!(istype(W, /obj/item/weapon/chemsprayer)) &&!(istype(W, /obj/item/weapon/pepperspray)) && !(istype(W, /obj/item/weapon/plantbgone)) )
+ if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) &&!(istype(W, /obj/item/weapon/chemsprayer)) &&!(istype(W, /obj/item/weapon/pepperspray)) && !(istype(W, /obj/item/weapon/plantbgone)) && !(istype(W, /obj/item/weapon/reagent_containers/glass/rag)) )
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O << "\red [src] has been hit by [user] with [W]"
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 510d2c76be4..6c0fd9a6bcc 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -1,5 +1,8 @@
/obj/item/weapon/implant
name = "implant"
+ desc = "An implant. Not usually seen outside a body."
+ icon = 'items.dmi'
+ icon_state = "implant"
var
implanted = null
mob/imp_in = null
@@ -16,15 +19,24 @@
trigger(emote, source as mob)
return
-
activate()
return
+ attackby(obj/item/weapon/I as obj, mob/user as mob)
+ ..()
+ if (istype(I, /obj/item/weapon/implanter))
+ if (I:imp)
+ return
+ else
+ src.loc = I
+ I:imp = src
+// del(src)
+ I:update()
+ return
implanted(source as mob)
return
-
get_data()
return "No information available"
@@ -34,8 +46,8 @@
/obj/item/weapon/implant/uplink
- name = "uplink"
- desc = "Summon things."
+ name = "uplink implant"
+ desc = "A micro-telecrystal implant which allows for instant transportation of equipment."
var
activation_emote = "chuckle"
obj/item/device/uplink/radio/uplink = null
@@ -63,8 +75,8 @@
/obj/item/weapon/implant/tracking
- name = "tracking"
- desc = "Track with this."
+ name = "tracking implant"
+ desc = "An implant which relays information to the appropriate tracking computer."
var
id = 1.0
@@ -89,8 +101,8 @@ Implant Specifics:
"}
//Nuke Agent Explosive
/obj/item/weapon/implant/dexplosive
- name = "explosive"
- desc = "And boom goes the weasel."
+ name = "explosive implant"
+ desc = "A military grade micro bio-explosive. Highly dangerous."
var/activation_emote = "deathgasp"
var/coded = 0
@@ -140,8 +152,8 @@ Implant Specifics:
"}
/obj/item/weapon/implant/chem
- name = "chem"
- desc = "Injects things."
+ name = "chemical implant"
+ desc = "A micro-injector that can be triggered remotely."
allow_reagents = 1
get_data()
@@ -190,8 +202,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/loyalty
- name = "loyalty"
- desc = "Makes you loyal or such."
+ name = "loyalty implant"
+ desc = "An implant which contains a small pod of nanobots which manipulate host mental functions to induce loyalty."
get_data()
var/dat = {"
@@ -220,8 +232,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
//BS12 Explosive
/obj/item/weapon/implant/explosive
- name = "explosive"
- desc = "And boom goes the weasel."
+ name = "explosive implant"
+ desc = "A military grade micro bio-explosive. Highly dangerous."
var/phrase = "supercalifragilisticexpialidocious"
@@ -263,8 +275,8 @@ the implant may become unstable and either pre-maturely inject the subject or si
usr << "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', say [src.phrase] to attempt to activate."
/obj/item/weapon/implant/death_alarm
- name = "death alarm"
- desc = "Danger Will Robinson!"
+ name = "death alarm implant"
+ desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
var/mobname = "Will Robinson"
get_data()
@@ -302,7 +314,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
/obj/item/weapon/implant/compressed
name = "compressed matter implant"
- desc = "*fwooomp*"
+ desc = "Based on compressed matter technology, can store a single item."
var/activation_emote = "sigh"
var/obj/item/scanned = null
diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm
index 527b13f4caf..ecd091dfa5b 100644
--- a/code/game/objects/items/weapons/surgery_tools.dm
+++ b/code/game/objects/items/weapons/surgery_tools.dm
@@ -569,8 +569,47 @@ CIRCULAR SAW
return 0
if(!S.bleeding)
- user << "\red [H] is not bleeding in \his [S.display_name]!"
- return 0
+ if(S.implant)
+ if(H != user)
+ H.visible_message( \
+ "\red [user] is attempting to remove the implant in [H]'s [S.display_name] with \the [src].", \
+ "\red [user] attempts to remove the implant in your [S.display_name] with \the [src]!")
+ else
+ H.visible_message( \
+ "\red [user] attempts to remove the implant in \his [S.display_name] with \the [src]!", \
+ "\red You attempt to remove the implant in your [S.display_name] with \the [src]!")
+
+ if(do_mob(user, H, 50))
+ if(prob(50))
+ if(H != user)
+ H.visible_message( \
+ "\red [user] successfully removes the implant in [H]'s [S.display_name] with \the [src]!", \
+ "\red [user] successfully removes the implant in your [S.display_name] with \the [src]!")
+ else
+ H.visible_message( \
+ "\red [user] successfully removes the implant in \his [S.display_name] with \the [src]!", \
+ "\red You successfully remove the implant in your [S.display_name] with \the [src]!")
+ for(var/obj/item/weapon/implant/implant in S.implant)
+ implant.loc = (get_turf(H))
+ implant.implanted = 0
+ S.implant = null
+ if(istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/uplink) || istype(implant, /obj/item/weapon/implant/dexplosive) || istype(implant, /obj/item/weapon/implant/explosive) || istype(implant, /obj/item/weapon/implant/compressed))
+ usr << "The implant disintegrates into nothing..."
+ del(implant)
+ else
+ if(H != user)
+ H.visible_message( \
+ "\red [user] fails to removes the implant!", \
+ "\red [user] fails to removes the implant!")
+ else
+ H.visible_message( \
+ "\red [user] fails to removes the implant!", \
+ "\red You fail to removes the implant!")
+
+ return 1
+ else
+ user << "\red [H] is not bleeding in \his [S.display_name]!"
+ return 0
if(H != user)
H.visible_message( \
diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm
index 807fd6296ef..dec64c2fb59 100644
--- a/code/modules/DetectiveWork/detective_work.dm
+++ b/code/modules/DetectiveWork/detective_work.dm
@@ -742,11 +742,32 @@ proc/blood_incompatible(donor,receiver)
return 0
/obj/item/weapon/rag
+ New() // So I don't have to grab maplock
+ spawn(1)
+ new/obj/item/weapon/reagent_containers/glass/rag(loc)
+ del src
+
+/obj/item/weapon/reagent_containers/glass/rag
name = "damp rag"
- desc = "For cleaning up messes, I suppose."
+ desc = "For cleaning up messes, you suppose."
w_class = 1
icon = 'toy.dmi'
icon_state = "rag"
+ amount_per_transfer_from_this = 5
+ possible_transfer_amounts = list(5)
+ volume = 5
+ can_be_placed_into = null
+
+ attack(atom/target as obj|turf|area, mob/user as mob , flag)
+ if(ismob(target) && target.reagents && reagents.total_volume)
+ user << "\blue You smother [target] with \the [src]."
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] has been smothered with \the [] by []!", target, src, user), 1)
+ src.reagents.reaction(target, TOUCH)
+ spawn(5) src.reagents.clear_reagents()
+ return
+ else
+ ..()
afterattack(atom/A as obj|turf|area, mob/user as mob)
if(istype(A))
@@ -754,4 +775,11 @@ proc/blood_incompatible(donor,receiver)
if(do_after(user,30))
user.visible_message("[user] finishes wiping off the [A]!")
A.clean_blood()
- return
\ No newline at end of file
+ return
+
+ examine()
+ if (!( usr ))
+ return
+ usr << "That's \a [src]."
+ usr << desc
+ return
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 6adf1ab3ec0..05cd0f79145 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ