/
implantcase.dm
81 lines (73 loc) · 2.68 KB
/
implantcase.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* Item used to store implants. Can be renamed with a pen. Implants are moved between those and implanters when a mob uses an implanter on a case.
*/
/obj/item/implantcase
name = "implant case"
desc = "A glass case containing an implant."
icon = 'icons/obj/medical/syringe.dmi'
icon_state = "implantcase-0"
inhand_icon_state = "implantcase"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
throw_speed = 2
throw_range = 5
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/glass= SMALL_MATERIAL_AMOUNT * 5)
///the implant within the case
var/obj/item/implant/imp = null
///Type of implant this will spawn as imp upon being spawned
var/imp_type
/obj/item/implantcase/Initialize(mapload)
. = ..()
if(imp_type)
imp = new imp_type(src)
update_appearance()
if(imp)
reagents = imp.reagents
/obj/item/implantcase/Destroy(force)
QDEL_NULL(imp)
return ..()
/obj/item/implantcase/update_icon_state()
icon_state = "implantcase-[imp ? imp.implant_color : 0]"
return ..()
/obj/item/implantcase/attackby(obj/item/used_item, mob/living/user, params)
if(istype(used_item, /obj/item/pen))
if(!user.can_write(used_item))
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() != used_item) || !user.can_perform_action(src))
return
if(new_name)
name = "implant case - '[new_name]'"
else
name = "implant case"
else if(istype(used_item, /obj/item/implanter))
var/obj/item/implanter/used_implanter = used_item
if(used_implanter.imp && !imp)
//implanter to case implant transfer
used_implanter.imp.forceMove(src)
imp = used_implanter.imp
used_implanter.imp = null
update_appearance()
reagents = imp.reagents
used_implanter.update_appearance()
else if(!used_implanter.imp && imp)
//implant case to implanter implant transfer
imp.forceMove(used_implanter)
used_implanter.imp = imp
imp = null
reagents = null
update_appearance()
used_implanter.update_appearance()
else
return ..()
///An implant case that spawns with a tracking implant, as well as an appropriate name and description.
/obj/item/implantcase/tracking
name = "implant case - 'Tracking'"
desc = "A glass case containing a tracking implant."
imp_type = /obj/item/implant/tracking
///An implant case that spawns with a firearms authentication implant, as well as an appropriate name and description.
/obj/item/implantcase/weapons_auth
name = "implant case - 'Firearms Authentication'"
desc = "A glass case containing a firearms authentication implant."
imp_type = /obj/item/implant/weapons_auth