forked from Aurorastation/Aurora.3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hypospray.dm
133 lines (113 loc) · 4.77 KB
/
hypospray.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
////////////////////////////////////////////////////////////////////////////////
/// HYPOSPRAY
////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/hypospray
name = "hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
icon = 'icons/obj/syringe.dmi'
item_state = "hypo"
icon_state = "hypo"
amount_per_transfer_from_this = 5
unacidable = 1
volume = 30
possible_transfer_amounts = null
flags = OPENCONTAINER
slot_flags = SLOT_BELT
///obj/item/weapon/reagent_containers/hypospray/Initialize() //comment this to make hypos start off empty
// . = ..()
// reagents.add_reagent("tricordrazine", 30)
// return
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob, var/target_zone)
if(!reagents.total_volume)
user << "<span class='warning'>[src] is empty.</span>"
return
if (!istype(M))
return
var/mob/living/carbon/human/H = M
if(istype(H))
var/obj/item/organ/external/affected = H.get_organ(target_zone)
if(!affected)
user << "<span class='danger'>\The [H] is missing that limb!</span>"
return
else if(affected.status & ORGAN_ROBOT)
user << "<span class='danger'>You cannot inject a robotic limb.</span>"
return
user.visible_message("<span class='warning'>[user] is trying to inject [target] with [src]!</span>","<span class='notice'>You are trying to inject [M] with [src].</span>")
if(H.run_armor_check(target_zone,"melee",0,"Your armor slows down the injection!","Your armor slows down the injection!"))
if(!do_mob(user, M, 60))
return
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
user.do_attack_animation(M)
M << "<span class='notice'>You feel a tiny prick!</span>"
playsound(src, 'sound/items/hypospray.ogg',25)
if(M.reagents)
var/contained = reagentlist()
var/trans = reagents.trans_to_mob(M, amount_per_transfer_from_this, CHEM_BLOOD)
admin_inject_log(user, M, src, contained, trans)
user << "<span class='notice'>[trans] units injected. [reagents.total_volume] units remaining in \the [src].</span>"
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector
name = "autoinjector"
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
icon_state = "autoinjector"
item_state = "autoinjector"
amount_per_transfer_from_this = 5
volume = 5
/obj/item/weapon/reagent_containers/hypospray/autoinjector/Initialize()
. =..()
reagents.add_reagent("inaprovaline", 5)
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
..()
if(reagents.total_volume <= 0) //Prevents autoinjectors to be refilled.
flags &= ~OPENCONTAINER
update_icon()
return
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
if(reagents.total_volume > 0)
icon_state = "[initial(icon_state)]1"
else
icon_state = "[initial(icon_state)]0"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user)
..(user)
if(reagents && reagents.reagent_list.len)
user << "<span class='notice'>It is currently loaded.</span>"
else
user << "<span class='notice'>It is spent.</span>"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack
name = "stimpack"
desc = "A simple chemical cocktail of hyperzine and tramadol designed to boost efficiency by 6,000% (estimated). Hoo-rah!"
volume = 20
amount_per_transfer_from_this = 20
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack/Initialize()
. = ..()
reagents.add_reagent("hyperzine", 12)
reagents.add_reagent("tramadol", 8)
update_icon()
/obj/item/weapon/reagent_containers/hypospray/autoinjector/survival
name = "survival autoinjector"
desc = "A special cocktail designed to keep you alive in the field should disaster seek to prevail."
volume = 35
amount_per_transfer_from_this = 35
/obj/item/weapon/reagent_containers/hypospray/autoinjector/survival/Initialize()
. = ..()
reagents.add_reagent("tricordrazine", 15)
reagents.add_reagent("inaprovaline", 5)
reagents.add_reagent("dexalinp", 5)
reagents.add_reagent("oxycodone", 5)
reagents.add_reagent("methylphenidate", 5)
update_icon()
/obj/item/weapon/reagent_containers/hypospray/combat
name = "combat hypospray"
desc = "A hypospray loaded with combat stimulants."
item_state = "combat_hypo"
icon_state = "combat_hypo"
volume = 20
/obj/item/weapon/reagent_containers/hypospray/combat/Initialize()
. = ..()
reagents.add_reagent("oxycodone", 5)
reagents.add_reagent("synaptizine", 5)
reagents.add_reagent("hyperzine", 5)
reagents.add_reagent("arithrazine", 5)
return