mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-25 08:34:23 +00:00
This is a traitor item that allows you to deploy inside box that promptly turns invisible. If the box collides with a living being or vice versa, it will be temporarily revealed, pushing against the box will continue revealing it. While the box is revealed, clicking on it will open the box as well as destroy it, clicking the action button while the box is deployed also destroys the box. Finally, you can't open airlocks while inside the box, that means you must exit the box > open > wait until cooldown > enter box if you're not a smart agent and wait for someone to open the door before sneaking behind them. The box can be recognized as of syndicate nature due to a red label on its side.
77 lines
2.1 KiB
Plaintext
77 lines
2.1 KiB
Plaintext
/obj/item/implanter
|
|
name = "implanter"
|
|
desc = "A sterile automatic implant injector."
|
|
icon = 'icons/obj/items_and_weapons.dmi'
|
|
icon_state = "implanter0"
|
|
item_state = "syringe_0"
|
|
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
|
|
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
|
|
throw_speed = 3
|
|
throw_range = 5
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
materials = list(MAT_METAL=600, MAT_GLASS=200)
|
|
var/obj/item/implant/imp = null
|
|
var/imp_type = null
|
|
|
|
|
|
/obj/item/implanter/update_icon()
|
|
if(imp)
|
|
icon_state = "implanter1"
|
|
else
|
|
icon_state = "implanter0"
|
|
|
|
|
|
/obj/item/implanter/attack(mob/living/M, mob/user)
|
|
if(!istype(M))
|
|
return
|
|
if(user && imp)
|
|
if(M != user)
|
|
M.visible_message("<span class='warning'>[user] is attempting to implant [M].</span>")
|
|
|
|
var/turf/T = get_turf(M)
|
|
if(T && (M == user || do_mob(user, M, 50)))
|
|
if(src && imp)
|
|
if(imp.implant(M, user))
|
|
if (M == user)
|
|
to_chat(user, "<span class='notice'>You implant yourself.</span>")
|
|
else
|
|
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you.</span>")
|
|
imp = null
|
|
update_icon()
|
|
else
|
|
to_chat(user, "<span class='warning'>[src] fails to implant [M].</span>")
|
|
|
|
/obj/item/implanter/attackby(obj/item/W, mob/user, params)
|
|
if(istype(W, /obj/item/pen))
|
|
if(!user.is_literate())
|
|
to_chat(user, "<span class='notice'>You prod at [src] with [W]!</span>")
|
|
return
|
|
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
|
if(user.get_active_held_item() != W)
|
|
return
|
|
if(!user.canUseTopic(src, BE_CLOSE))
|
|
return
|
|
if(t)
|
|
name = "implanter ([t])"
|
|
else
|
|
name = "implanter"
|
|
else
|
|
return ..()
|
|
|
|
/obj/item/implanter/Initialize(mapload)
|
|
. = ..()
|
|
if(imp_type)
|
|
imp = new imp_type(src)
|
|
update_icon()
|
|
|
|
/obj/item/implanter/adrenalin
|
|
name = "implanter (adrenalin)"
|
|
imp_type = /obj/item/implant/adrenalin
|
|
|
|
/obj/item/implanter/emp
|
|
name = "implanter (EMP)"
|
|
imp_type = /obj/item/implant/emp
|
|
|
|
/obj/item/implanter/stealth
|
|
name = "implanter (stealth)"
|
|
imp_type = /obj/item/implant/stealth |