mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-14 19:03:21 +00:00
* canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE The most idiotic thing I've seen is canUseTopic's defines, they literally just define TRUE, you can use it however you want, it doesn't matter, it just means TRUE. You can mix and match the args and it will set that arg to true, despite the name. It's so idiotic I decided to remove it, so now I can reclaim a little bit of my sanity.
69 lines
2.0 KiB
Plaintext
69 lines
2.0 KiB
Plaintext
/**
|
|
* Players can use this item to put obj/item/implant's in living mobs. Can be renamed with a pen.
|
|
*/
|
|
/obj/item/implanter
|
|
name = "implanter"
|
|
desc = "A sterile automatic implant injector."
|
|
icon = 'icons/obj/medical/syringe.dmi'
|
|
icon_state = "implanter0"
|
|
inhand_icon_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
|
|
custom_materials = list(/datum/material/iron=600, /datum/material/glass=200)
|
|
///The implant in our implanter
|
|
var/obj/item/implant/imp = null
|
|
///Type of implant this will spawn as imp upon being spawned
|
|
var/imp_type = null
|
|
|
|
/obj/item/implanter/update_icon_state()
|
|
icon_state = "implanter[imp ? 1 : 0]"
|
|
return ..()
|
|
|
|
/obj/item/implanter/attack(mob/living/target, mob/user)
|
|
if(!(istype(target) && user && imp))
|
|
return
|
|
|
|
if(target != user)
|
|
target.visible_message(span_warning("[user] is attempting to implant [target]."))
|
|
|
|
var/turf/target_on = get_turf(target)
|
|
if(!(target_on && (target == user || do_mob(user, target, 5 SECONDS))))
|
|
return
|
|
if(!(src && imp))
|
|
return
|
|
|
|
if(imp.implant(target, user))
|
|
if (target == user)
|
|
to_chat(user, span_notice("You implant yourself."))
|
|
else
|
|
target.visible_message(span_notice("[user] implants [target]."), span_notice("[user] implants you."))
|
|
imp = null
|
|
update_appearance()
|
|
else
|
|
to_chat(user, span_warning("[src] fails to implant [target]."))
|
|
|
|
/obj/item/implanter/attackby(obj/item/I, mob/living/user, params)
|
|
if(!istype(I, /obj/item/pen))
|
|
return ..()
|
|
if(!user.can_write(I))
|
|
return
|
|
|
|
var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN)
|
|
if(user.get_active_held_item() != I)
|
|
return
|
|
if(!user.canUseTopic(src, be_close = TRUE))
|
|
return
|
|
if(new_name)
|
|
name = "implanter ([new_name])"
|
|
else
|
|
name = "implanter"
|
|
|
|
/obj/item/implanter/Initialize(mapload)
|
|
. = ..()
|
|
if(!imp && imp_type)
|
|
imp = new imp_type(src)
|
|
update_appearance()
|