Files
Bubberstation/code/game/objects/items/implants/implanter.dm
John Willard 91f02f2a6b canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE (#69790)
* 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.
2022-10-01 09:47:52 -07:00

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()