@@ -7,123 +7,97 @@
throw_range = 5
w_class = W_CLASS_SMALL
var/obj/item/weapon/implant/imp = null
var/imp_type = null

/obj/item/weapon/implanter/proc/update()

/obj/item/weapon/implanter/update()
if (src.imp)
src.icon_state = "implanter1"
else
src.icon_state = "implanter0"
return
icon_state = "implanter[imp? 1:0]"

/obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob)
if (!istype(M, /mob/living/carbon))
if(!istype(M, /mob/living/carbon))
return
if (user && src.imp)
if(user && imp)
for (var/mob/O in viewers(M, null))
O.show_message("<span class='warning'>[user] is attempting to implant [M].</span>", 1)

var/turf/T1 = get_turf(M)
if (T1 && ((M == user) || do_after(user,M, 50)))
if(user && M && (get_turf(M) == T1) && src && src.imp)
if(T1 && ((M == user) || do_after(user,M, 50)))
if(user && M && (get_turf(M) == T1) && src && imp)
for (var/mob/O in viewers(M, null))
O.show_message("<span class='warning'>[M] has been implanted by [user].</span>", 1)

M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [src.name] ([src.imp.name]) by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] ([src.imp.name]) to implant [M.name] ([M.ckey])</font>")
msg_admin_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [name] ([imp.name]) by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [name] ([imp.name]) to implant [M.name] ([M.ckey])</font>")
msg_admin_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")

user.show_message("<span class='warning'>You implanted the implant into [M].</span>")
if(src.imp.implanted(M, user))
src.imp.forceMove(M)
src.imp.imp_in = M
src.imp.implanted = 1
if (ishuman(M))
if(imp.implanted(M, user))
imp.forceMove(M)
imp.imp_in = M
imp.implanted = 1
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/datum/organ/external/affected = H.get_organ(user.zone_sel.selecting)
affected.implants += src.imp
affected.implants += imp
imp.part = affected
M:implanting = 0
src.imp = null
imp = null
update()
return

/obj/item/weapon/implanter/New()
if(imp_type)
imp = new imp_type(src)
..()
update()

/obj/item/weapon/implanter/traitor
name = "greytide conversion kit"
desc = "Any humanoid injected with this implant will become loyal to the injector and the greytide, unless of course the host is already loyal to someone else."

/obj/item/weapon/implanter/traitor/New()
src.imp = new /obj/item/weapon/implant/traitor(src)
..()
update()
return

imp_type = /obj/item/weapon/implant/traitor

/obj/item/weapon/implanter/loyalty
name = "implanter-loyalty"

/obj/item/weapon/implanter/loyalty/New()
src.imp = new /obj/item/weapon/implant/loyalty( src )
..()
update()
return

imp_type = /obj/item/weapon/implant/loyalty

/obj/item/weapon/implanter/explosive
name = "implanter (E)"

/obj/item/weapon/implanter/explosive/New()
src.imp = new /obj/item/weapon/implant/explosive( src )
..()
update()
return

imp_type = /obj/item/weapon/implant/explosive

/obj/item/weapon/implanter/adrenalin
name = "implanter-adrenalin"
imp_type = /obj/item/weapon/implant/adrenalin

/obj/item/weapon/implanter/adrenalin/New()
src.imp = new /obj/item/weapon/implant/adrenalin(src)
..()
update()
return

/obj/item/weapon/implanter/peace
name = "implanter-pax"
desc = "An implanter containing a pax implant"
imp_type = /obj/item/weapon/implant/peace

/obj/item/weapon/implanter/compressed
name = "implanter (C)"
icon_state = "cimplanter1"
imp_type = /obj/item/weapon/implant/compressed

var/list/forbidden_types=list(
// /obj/item/weapon/storage/bible // VG #11 - Recursion.
)

/obj/item/weapon/implanter/compressed/New()
imp = new /obj/item/weapon/implant/compressed( src )
..()
update()
return

/obj/item/weapon/implanter/compressed/update()
if (imp)
if(imp)
var/obj/item/weapon/implant/compressed/c = imp
if(!c.scanned)
icon_state = "cimplanter1"
else
icon_state = "cimplanter2"
else
icon_state = "cimplanter0"
return

/obj/item/weapon/implanter/compressed/attack(mob/M as mob, mob/user as mob)
// Attacking things in your hands tends to make this fuck up.
if(!istype(M))
return
var/obj/item/weapon/implant/compressed/c = imp
if (!c)
if(!c)
return
if (c.scanned == null)
if(c.scanned == null)
to_chat(user, "Please scan an object with the implanter first.")
return
..()
@@ -134,7 +108,7 @@
return
if(istype(I) && imp)
var/obj/item/weapon/implant/compressed/c = imp
if (c.scanned)
if(c.scanned)
if(istype(I,/obj/item/weapon/storage))
..()
return
@@ -146,13 +120,3 @@
c.scanned = I
c.scanned.forceMove(c)
update()


/obj/item/weapon/implanter/peace
name = "implanter-pax"
desc = "An implanter containing a pax implant"

/obj/item/weapon/implanter/peace/New()
src.imp = new /obj/item/weapon/implant/peace(src)
..()
update()
@@ -20,7 +20,7 @@
overlays.Cut()

if(base_icon)
if(emagged && check_icon(icon, "[base_icon]-emagged"))
if(emagged && has_icon(icon, "[base_icon]-emagged"))
icon_state = "[base_icon]-emagged"
else
icon_state = "[base_icon]"
@@ -41,11 +41,11 @@

if(opened)
if(wiresexposed)
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[base_icon]-ov-openpanel +w")? "[icon_state]-ov-openpanel +w" : "ov-openpanel +w"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[base_icon]-ov-openpanel +w")? "[icon_state]-ov-openpanel +w" : "ov-openpanel +w"]")
else if(cell)
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[base_icon]-ov-openpanel +c")? "[icon_state]-ov-openpanel +c" : "ov-openpanel +c"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[base_icon]-ov-openpanel +c")? "[icon_state]-ov-openpanel +c" : "ov-openpanel +c"]")
else
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[base_icon]-ov-openpanel -c")? "[icon_state]-ov-openpanel -c" : "ov-openpanel -c"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[base_icon]-ov-openpanel -c")? "[icon_state]-ov-openpanel -c" : "ov-openpanel -c"]")

// Add any hats to the icon. Bloodspatter can also be in overlays_hats
for(var/image/I in overlays_hats)
@@ -176,6 +176,10 @@
vulnerability = 0.35
isupgrade = TRUE

/obj/item/robot_parts/robot_component/armour/kevlar
name = "kevlar-reinforced armour plating"
parent_type = /obj/item/robot_parts/robot_component/armour/reinforced

/obj/item/robot_parts/robot_component/camera
name = "camera"
icon_state = "camera"
@@ -1061,17 +1061,17 @@

if(opened)
if(wiresexposed)
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[icon_state]-ov-openpanel +w")? "[icon_state]-ov-openpanel +w" : "ov-openpanel +w"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[icon_state]-ov-openpanel +w")? "[icon_state]-ov-openpanel +w" : "ov-openpanel +w"]")
else if(cell)
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[icon_state]-ov-openpanel +c")? "[icon_state]-ov-openpanel +c" : "ov-openpanel +c"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[icon_state]-ov-openpanel +c")? "[icon_state]-ov-openpanel +c" : "ov-openpanel +c"]")
else
overlays += image(icon = icon, icon_state = "[check_icon(icon, "[icon_state]-ov-openpanel -c")? "[icon_state]-ov-openpanel -c" : "ov-openpanel -c"]")
overlays += image(icon = icon, icon_state = "[has_icon(icon, "[icon_state]-ov-openpanel -c")? "[icon_state]-ov-openpanel -c" : "ov-openpanel -c"]")

if(module_active && istype(module_active,/obj/item/borg/combat/shield) && check_icon(icon, "[icon_state]-shield"))
if(module_active && istype(module_active,/obj/item/borg/combat/shield) && has_icon(icon, "[icon_state]-shield"))
overlays += image(icon = icon, icon_state = "[icon_state]-shield")

if(base_icon)
if(module_active && istype(module_active,/obj/item/borg/combat/mobility) && check_icon(icon, "[icon_state]-roll"))
if(module_active && istype(module_active,/obj/item/borg/combat/mobility) && has_icon(icon, "[icon_state]-roll"))
icon_state = "[base_icon]-roll"
else
icon_state = base_icon
@@ -526,15 +526,9 @@
can_hold = list(
/obj/item/weapon/reagent_containers/food/drinks,
/obj/item/device/detective_scanner,
/obj/item/device/camera_bug,
/obj/item/weapon/f_card
)

/obj/item/weapon/gripper/service/noir/New()
..()
var/obj/item/device/detective_scanner/scanner = new /obj/item/device/detective_scanner(src)
grip_item(scanner, src, FALSE)

/obj/item/weapon/gripper/no_use //Used when you want to hold and put things in other things, but not able to 'use' the item

/obj/item/weapon/gripper/no_use/attack_self(mob/user as mob)
BIN +861 Bytes (110%) icons/obj/card.dmi
Binary file not shown.
@@ -2296,7 +2296,7 @@
#include "interface\web\interface.dms"
#include "maprendering\maprendering.dm"
#include "maps\_map.dm"
#include "maps\test_tiny.dm"
#include "maps\tgstation.dm"
#include "maps\defficiency\areas.dm"
#include "maps\defficiency\pipes.dm"
#include "maps\packedstation\telecomms.dm"