Hypospray kits and reworks! (#5907)

* Adds Hypospray kits, fixes reagent overlays

Also adds colors to trek chems other than PINK.

* reee admins.txt

* adds the CMO Hypo MK II kit to the CMO's locker

renames the locker overrides as well, because lazy

* grammer gud

* hypo vial fix suggested by Kfive

* Modifies hypospray functions

* Fixed the Hypospray mk.II, is now comprehensive where it must.

* Fixed bugs, including the vending machine problem.

* Either fixed or didn't fix line terminator issues.

* Turns out there were no line ending problems, rather there were literally spaces after some lines, which got removed automatically.

* Forgot a comma.

* Forgot a comma, even though it's in a comment. Good thing I caught it before somebody tried decommenting it.

* Left a line in the alternative reskin function for hypovials. This has been removed since it's unnecessary.

* delay tweaks. otherwise all good.

* reee github

* unneeded \the I thought were purged

* grammar fix, gives MDs and Chemist hypokits

* Makes chem masters able to produce vials

* recompiles tgui

* Update belt.dm
This commit is contained in:
Poojawa
2018-03-21 15:28:06 -05:00
committed by GitHub
parent c14b00ad80
commit b4a7def5ca
22 changed files with 553 additions and 279 deletions
View File
Regular → Executable
+21 -19
View File
@@ -849,25 +849,27 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_deny = "med-deny"
product_ads = "Go save some lives!;The best stuff for your medbay.;Only the finest tools.;Natural chemicals!;This stuff saves lives.;Don't you want some?;Ping!"
req_access_txt = "5"
products = list(/obj/item/reagent_containers/syringe = 12,
/obj/item/reagent_containers/dropper = 3,
/obj/item/device/healthanalyzer = 4,
/obj/item/device/sensor_device = 2,
/*
products = list(/obj/item/reagent_containers/syringe = 12,
/obj/item/reagent_containers/dropper = 3,
/obj/item/device/healthanalyzer = 4,
/obj/item/device/sensor_device = 2,
/obj/item/pinpointer/crew = 2,
/obj/item/reagent_containers/medspray/sterilizine = 1,
/obj/item/stack/medical/gauze = 8,
/obj/item/reagent_containers/pill/patch/styptic = 5,
/obj/item/reagent_containers/medspray/styptic = 2,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5,
/obj/item/stack/medical/gauze = 8,
/obj/item/reagent_containers/pill/patch/styptic = 5,
/obj/item/reagent_containers/medspray/styptic = 2,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5,
/obj/item/reagent_containers/medspray/silver_sulf = 2,
/obj/item/reagent_containers/pill/insulin = 10,
/obj/item/reagent_containers/pill/salbutamol = 2,
/obj/item/reagent_containers/glass/bottle/charcoal = 4,
/obj/item/reagent_containers/glass/bottle/epinephrine = 4,
/obj/item/reagent_containers/pill/salbutamol = 2,
/obj/item/reagent_containers/glass/bottle/charcoal = 4,
/obj/item/reagent_containers/glass/bottle/epinephrine = 4,
/obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
/obj/item/reagent_containers/glass/bottle/morphine = 4,
/obj/item/reagent_containers/glass/bottle/toxin = 3,
/obj/item/reagent_containers/glass/bottle/morphine = 4,
/obj/item/reagent_containers/glass/bottle/toxin = 3,
/obj/item/reagent_containers/syringe/antiviral = 6)
*/ //products list in modular_citadel's version of this file
contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/charcoal = 6)
premium = list(/obj/item/storage/box/hug/medical = 1, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/wrench/medical = 1)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
@@ -1066,15 +1068,15 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access_txt = "11" //Engineering Equipment access
products = list(/obj/item/clothing/glasses/meson/engine = 2,
products = list(/obj/item/clothing/glasses/meson/engine = 2,
/obj/item/clothing/glasses/welding = 3,
/obj/item/device/multitool = 4,
/obj/item/construction/rcd/loaded = 3,
/obj/item/device/multitool = 4,
/obj/item/construction/rcd/loaded = 3,
/obj/item/grenade/chem_grenade/smart_metal_foam = 10,
/obj/item/device/geiger_counter = 5,
/obj/item/device/geiger_counter = 5,
/obj/item/stock_parts/cell/high = 10,
/obj/item/electronics/airlock = 10,
/obj/item/electronics/apc = 10,
/obj/item/electronics/airlock = 10,
/obj/item/electronics/apc = 10,
/obj/item/electronics/airalarm = 10)
contraband = list(/obj/item/stock_parts/cell/potato = 3)
premium = list(/obj/item/storage/belt/utility = 3, /obj/item/storage/box/smart_metal_foam = 1)
+3 -2
View File
@@ -160,9 +160,10 @@
/obj/item/gun/syringe/syndicate,
/obj/item/implantcase,
/obj/item/implant,
/obj/item/implanter
/obj/item/implanter,
/obj/item/hypospray
)
// CIT CHANGE added hypospray mk IIs to belt /obj/item/hypospray
/obj/item/storage/belt/security
name = "security belt"
+2
View File
@@ -75,11 +75,13 @@
charges = list(37, 4, 4)// of 111 standard, 12 contraband, 10 premium(?)
init_charges = list(37, 4, 4)
/*
/obj/item/vending_refill/medical
machine_name = "NanoMed"
icon_state = "refill_medical"
charges = list(26, 5, 3)// of 76 standard, 13 contraband, 8 premium
init_charges = list(26, 5, 3)
*/ //I don't know how citadel change comments work, see the modular_citadel folder instead.
/obj/item/vending_refill/donksoft
machine_name = "Donksoft Toy Vendor"
+1 -1
View File
@@ -5,7 +5,7 @@
item_state = "labcoat"
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman,/obj/item/hypospray) //CITADEL ADD, Hyposprays to laboats
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 50, "acid" = 50)
togglename = "buttons"
species_exception = list(/datum/species/golem)
@@ -307,6 +307,34 @@
reagents.trans_to(P, vol_part)
. = TRUE
if("createvial")
var/many = params["many"]
if(reagents.total_volume == 0)
return
var/amount_full = 0
var/vol_part = min(reagents.total_volume, 30)
if(text2num(many))
amount_full = round(reagents.total_volume / 30)
vol_part = reagents.total_volume % 30
var/name = stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN)
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE))
return
var/obj/item/reagent_containers/glass/bottle/vial/small/V
for(var/i = 0; i < amount_full; i++)
V = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location())
V.name = trim("[name] hypovial")
adjust_item_drop_location(V)
reagents.trans_to(V, 30)
if(vol_part)
V = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location())
V.name = trim("[name] hypovial")
adjust_item_drop_location(V)
reagents.trans_to(V, vol_part)
. = TRUE
if("analyze")
var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
if(R)
@@ -931,7 +931,7 @@
id = "bicaridine"
description = "Restores bruising. Overdose causes it instead."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#BF0000"
overdose_threshold = 30
/datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M)
@@ -949,7 +949,7 @@
id = "dexalin"
description = "Restores oxygen loss. Overdose causes it instead."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#0080FF"
overdose_threshold = 30
/datum/reagent/medicine/dexalin/on_mob_life(mob/living/M)
@@ -967,7 +967,7 @@
id = "kelotane"
description = "Restores fire damage. Overdose causes it instead."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#FFA800"
overdose_threshold = 30
/datum/reagent/medicine/kelotane/on_mob_life(mob/living/M)
@@ -985,7 +985,7 @@
id = "antitoxin"
description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#00A000"
overdose_threshold = 30
taste_description = "a roll of gauze"
@@ -1006,7 +1006,7 @@
id = "inaprovaline"
description = "Stabilizes the breathing of patients. Good for those in critical condition."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#00BFFF"
/datum/reagent/medicine/inaprovaline/on_mob_life(mob/living/M)
if(M.losebreath >= 5)
@@ -1018,7 +1018,7 @@
id = "tricordrazine"
description = "Has a high chance to heal all types of damage. Overdose instead causes it."
reagent_state = LIQUID
color = "#C8A5DC"
color = "#8040FF"
overdose_threshold = 30
taste_description = "grossness"
-113
View File
@@ -1,113 +0,0 @@
//help I have no idea what I'm doing
/obj/item/storage/firstaid
icon = 'modular_citadel/icons/firstaid.dmi'
/obj/item/storage/firstaid/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/fire
icon_state = "burn"
/obj/item/storage/firstaid/fire/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/toxin
icon_state = "toxin"
/obj/item/storage/firstaid/toxin/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/o2
icon_state = "oxy"
/obj/item/storage/firstaid/tactical
icon_state = "tactical"
/obj/item/storage/minifirstaid
name = "mini first-aid kit"
desc = "It's an emergency medical kit for those serious boo-boos."
icon = 'modular_citadel/icons/firstaid.dmi'
icon_state = "firstaid-mini"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
throw_speed = 3
throw_range = 7
var/empty = FALSE
item_state = "firstaid"
w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 4 //half that of regular kits
storage_slots = 2
/obj/item/storage/minifirstaid/regular
icon_state = "firstaid-mini"
desc = "An emergency first aid kit with the ability to heal the most minor of common injuries."
/obj/item/storage/minifirstaid/regular/PopulateContents()
if(empty)
return
new /obj/item/stack/medical/bruise_pack(src)
new /obj/item/stack/medical/ointment(src)
/obj/item/storage/minifirstaid/fire
name = "micro burn treatment kit"
desc = "A specialized medical kit for when some bloke sets themselves on fire."
icon_state = "burn-mini"
item_state = "firstaid-ointment"
/obj/item/storage/minifirstaid/fire/PopulateContents()
if(empty)
return
new /obj/item/reagent_containers/pill/patch/silver_sulf(src)
new /obj/item/reagent_containers/pill/oxandrolone(src)
/obj/item/storage/minifirstaid/toxin
name = "micro toxin treatment kit"
desc = "Used to treat the various crewmembers whose blood alcohol content are above 0.1."
icon_state = "toxin-mini"
item_state = "firstaid-toxin"
/obj/item/storage/minifirstaid/toxin/PopulateContents()
if(empty)
return
new /obj/item/reagent_containers/syringe/charcoal(src)
new /obj/item/storage/pill_bottle/charcoal(src)
/obj/item/storage/minifirstaid/o2
name = "micro oxygen deprivation treatment kit"
desc = "A nice box for spacewalking with."
icon_state = "oxy-mini"
item_state = "firstaid-o2"
/obj/item/storage/minifirstaid/o2/PopulateContents()
if(empty)
return
new /obj/item/reagent_containers/pill/salbutamol(src)
new /obj/item/reagent_containers/hypospray/medipen(src)
/obj/item/storage/minifirstaid/brute
name = "brute trauma treatment kit"
desc = "A first aid kit for when you stub your toe."
icon_state = "brute-mini"
item_state = "firstaid-brute"
/obj/item/storage/minifirstaid/brute/PopulateContents()
if(empty)
return
new /obj/item/reagent_containers/pill/patch/styptic(src)
new /obj/item/stack/medical/gauze(src)
/obj/item/storage/minifirstaid/tactical
name = "mini combat medkit"
desc = "A miniature box containing tactical medical supplies."
icon_state = "tactical-mini"
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/minifirstaid/tactical/PopulateContents()
if(empty)
return
new /obj/item/defibrillator/compact/combat/loaded(src)
new /obj/item/reagent_containers/hypospray/combat(src)
+27 -1
View File
@@ -1,7 +1,33 @@
/obj/machinery/vending/security
contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/storage/fancy/donut_box = 2, /obj/item/device/ssword_kit = 1)
premium = list(/obj/item/coin/antagtoken = 1, /obj/item/device/ssword_kit = 1)
/obj/machinery/vending/medical
products = list(/obj/item/reagent_containers/syringe = 12,
/obj/item/reagent_containers/dropper = 3,
/obj/item/device/healthanalyzer = 4,
/obj/item/device/sensor_device = 2,
/obj/item/pinpointer/crew = 2,
/obj/item/reagent_containers/medspray/sterilizine = 1,
/obj/item/stack/medical/gauze = 8,
/obj/item/reagent_containers/pill/patch/styptic = 5,
/obj/item/reagent_containers/medspray/styptic = 2,
/obj/item/reagent_containers/pill/patch/silver_sulf = 5,
/obj/item/reagent_containers/medspray/silver_sulf = 2,
/obj/item/reagent_containers/pill/insulin = 10,
/obj/item/reagent_containers/pill/salbutamol = 2,
/obj/item/reagent_containers/glass/bottle/charcoal = 4,
/obj/item/reagent_containers/glass/bottle/epinephrine = 4,
/obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
/obj/item/reagent_containers/glass/bottle/morphine = 4,
/obj/item/reagent_containers/glass/bottle/toxin = 3,
/obj/item/reagent_containers/syringe/antiviral = 6,
/obj/item/storage/hypospraykit/fire = 2,
/obj/item/storage/hypospraykit/toxin = 2,
/obj/item/storage/hypospraykit/o2 = 2,
/obj/item/storage/hypospraykit/brute = 2,
/obj/item/reagent_containers/glass/bottle/vial/small = 5)
#define STANDARD_CHARGE 1
#define CONTRABAND_CHARGE 2
#define COIN_CHARGE 3
+143
View File
@@ -0,0 +1,143 @@
//help I have no idea what I'm doing
/obj/item/storage/firstaid
icon = 'modular_citadel/icons/firstaid.dmi'
/obj/item/storage/firstaid/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/fire
icon_state = "burn"
/obj/item/storage/firstaid/fire/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/toxin
icon_state = "toxin"
/obj/item/storage/firstaid/toxin/Initialize(mapload)
. = ..()
icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4")
/obj/item/storage/firstaid/o2
icon_state = "oxy"
/obj/item/storage/firstaid/tactical
icon_state = "tactical"
//hijacking the minature first aids for hypospray boxes. <3
/obj/item/storage/hypospraykit
name = "hypospray kit"
desc = "It's a kit containing a hypospray and specific treatment chemical-filled vials."
icon = 'modular_citadel/icons/firstaid.dmi'
icon_state = "firstaid-mini"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
throw_speed = 3
throw_range = 7
var/empty = FALSE
item_state = "firstaid"
w_class = WEIGHT_CLASS_SMALL
max_combined_w_class = 5 //half that of regular kits
storage_slots = 5
/obj/item/storage/hypospraykit/regular
icon_state = "firstaid-mini"
desc = "A hypospray kit with general use vials."
/obj/item/storage/hypospraykit/regular/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/tricord(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src)
/obj/item/storage/hypospraykit/fire
name = "burn treatment hypospray kit"
desc = "A specialized hypospray kit for burn treatments. Apply with sass."
icon_state = "burn-mini"
item_state = "firstaid-ointment"
/obj/item/storage/hypospraykit/fire/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/burn(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src)
/obj/item/storage/hypospraykit/toxin
name = "toxin treatment hypospray kit"
icon_state = "toxin-mini"
item_state = "firstaid-toxin"
/obj/item/storage/hypospraykit/toxin/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/toxin(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src)
/obj/item/storage/hypospraykit/o2
name = "oxygen deprivation hypospray kit"
icon_state = "oxy-mini"
item_state = "firstaid-o2"
/obj/item/storage/hypospraykit/o2/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/oxygen(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src)
/obj/item/storage/hypospraykit/brute
name = "brute trauma hypospray kit"
icon_state = "brute-mini"
item_state = "firstaid-brute"
/obj/item/storage/hypospraykit/brute/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/brute(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src)
new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src)
/obj/item/storage/hypospraykit/tactical
name = "combat hypospray kit"
desc = "A hypospray kit best suited for combat situations."
icon_state = "tactical-mini"
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/hypospraykit/tactical/PopulateContents()
if(empty)
return
new /obj/item/defibrillator/compact/combat/loaded(src)
new /obj/item/hypospray/mkii/CMO/combat(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src)
/obj/item/storage/hypospraykit/cmo
name = "deluxe hypospray kit"
desc = "A kit containing a Deluxe hypospray and Vials."
icon_state = "tactical-mini"
max_w_class = WEIGHT_CLASS_NORMAL
storage_slots = 6
max_combined_w_class = 6
/obj/item/storage/hypospraykit/cmo/PopulateContents()
if(empty)
return
new /obj/item/hypospray/mkii/CMO(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin(src)
new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh(src)
/obj/item/storage/box/vials
name = "box of hypovials"
/obj/item/storage/box/vials/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/glass/bottle/vial/small( src )
+5
View File
@@ -0,0 +1,5 @@
/obj/item/vending_refill/medical
machine_name = "NanoMed"
icon_state = "refill_medical"
charges = list(32, 5, 3)// of 95 standard, 13 contraband, 8 premium
init_charges = list(32, 5, 3)
@@ -2,4 +2,6 @@
..()
new /obj/item/device/radio/headset/heads/qm(src)
/obj/structure/closet/secure_closet/CMO/PopulateContents()
..()
new /obj/item/storage/hypospraykit/cmo(src)
@@ -103,7 +103,7 @@
/obj/item/device/radio, /obj/item/tank/internals/emergency_oxygen,
/obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer,/obj/item/reagent_containers/syringe,
/obj/item/reagent_containers/glass/bottle/vial,/obj/item/reagent_containers/glass/beaker,
/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle, /obj/item/restraints/handcuffs
/obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle, /obj/item/restraints/handcuffs,/obj/item/hypospray
)
armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 5, "rad" = 10, "fire" = 10, "acid" = 0)
@@ -153,6 +153,7 @@
/obj/item/melee/baton,
/obj/item/restraints/handcuffs,
/obj/item/reagent_containers/hypospray,
/obj/item/hypospray,
/obj/item/device/healthanalyzer,
/obj/item/reagent_containers/syringe,
/obj/item/reagent_containers/glass/bottle/vial,
@@ -0,0 +1,7 @@
/datum/outfit/job/doctor
..()
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
/datum/outfit/job/chemist
..()
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
+143 -79
View File
@@ -1,43 +1,89 @@
#define HYPO_SPRAY 0
#define HYPO_INJECT 1
#define WAIT_SPRAY 50
#define WAIT_INJECT 50
#define SELF_SPRAY 30
#define SELF_INJECT 30
#define DELUXE_WAIT_SPRAY 40
#define DELUXE_WAIT_INJECT 40
#define DELUXE_SELF_SPRAY 20
#define DELUXE_SELF_INJECT 20
#define COMBAT_WAIT_SPRAY 0
#define COMBAT_WAIT_INJECT 0
#define COMBAT_SELF_SPRAY 0
#define COMBAT_SELF_INJECT 0
//A vial-loaded hypospray. Cartridge-based!
/obj/item/reagent_containers/hypospray/mkii
/obj/item/hypospray/mkii
name = "hypospray mk.II"
icon = 'modular_citadel/icons/obj/hypospraymkii.dmi'
icon_state = "hypo2"
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/small)
desc = "A new development from DeForest Medical, this new hypospray takes 30-unit vials as the drug supply for easy swapping."
volume = 0
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5,10,15)
desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping."
w_class = WEIGHT_CLASS_TINY
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small)
var/mode = HYPO_INJECT
var/obj/item/reagent_containers/glass/bottle/vial/vial
var/loaded_vial = /obj/item/reagent_containers/glass/bottle/vial/small
var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small
var/spawnwithvial = TRUE
var/start_vial = null
var/inject_wait = WAIT_INJECT
var/spray_wait = WAIT_SPRAY
var/spray_self = SELF_SPRAY
var/inject_self = SELF_INJECT
var/quickload = FALSE
var/penetrates = FALSE
/obj/item/reagent_containers/hypospray/mkii/CMO
/obj/item/hypospray/mkii/brute
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
/obj/item/hypospray/mkii/toxin
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
/obj/item/hypospray/mkii/oxygen
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
/obj/item/hypospray/mkii/burn
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
/obj/item/hypospray/mkii/tricord
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
/obj/item/hypospray/mkii/CMO
name = "hypospray mk.II deluxe"
allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
icon_state = "cmo2"
ignore_flags = 1
desc = "The Chief Medical Officer's hypospray is identically functional to the base model, excepting that it can take larger vials in addition to regular sized. It is also able to penetrate harder materials and deliver more reagents per spray."
desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
loaded_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
possible_transfer_amounts = list(5,10,15,30,60) //cmo hypo should be able to dump lots into it
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
inject_wait = DELUXE_WAIT_INJECT
spray_wait = DELUXE_WAIT_SPRAY
spray_self = DELUXE_SELF_SPRAY
inject_self = DELUXE_SELF_INJECT
/obj/item/reagent_containers/hypospray/mkii/Initialize()
/obj/item/hypospray/mkii/CMO/combat
name = "combat hypospray mk.II"
desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
icon_state = "combat2"
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
inject_wait = COMBAT_WAIT_INJECT
spray_wait = COMBAT_WAIT_SPRAY
spray_self = COMBAT_SELF_SPRAY
inject_self = COMBAT_SELF_INJECT
quickload = TRUE
penetrates = TRUE
/obj/item/hypospray/mkii/Initialize()
. = ..()
if(!spawnwithvial)
update_icon()
return
if (!start_vial)
start_vial = new loaded_vial(src)
vial = start_vial
if(start_vial)
vial = new start_vial
update_icon()
/obj/item/reagent_containers/hypospray/mkii/update_icon()
/obj/item/hypospray/mkii/update_icon()
..()
icon_state = "[initial(icon_state)][vial ? "" : "-e"]"
if(ismob(loc))
@@ -45,18 +91,17 @@
M.update_inv_hands()
return
/obj/item/reagent_containers/hypospray/mkii/examine(mob/user)
/obj/item/hypospray/mkii/examine(mob/user)
. = ..()
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
/obj/item/reagent_containers/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
var/obj/item/reagent_containers/glass/bottle/vial/V = I
reagents.trans_to(V, reagents.total_volume)
reagents.maximum_volume = 0
V.forceMove(user.loc)
user.put_in_hands(V)
to_chat(user, "<span class='notice'>You remove the vial from the [src].</span>")
to_chat(user, "<span class='notice'>You remove [vial] from [src].</span>")
vial = null
update_icon()
playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
@@ -64,33 +109,52 @@
to_chat(user, "<span class='notice'>This hypo isn't loaded!</span>")
return
/obj/item/reagent_containers/hypospray/mkii/attackby(obj/item/I, mob/living/user)
/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null))
to_chat(user, "<span class='warning'>[src] can not hold more than one vial!</span>")
return FALSE
if(!quickload)
to_chat(user, "<span class='warning'>[src] can not hold more than one vial!</span>")
return FALSE
unload_hypo(vial, user)
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
var/obj/item/reagent_containers/glass/bottle/vial/V = I
if(!is_type_in_list(V, allowed_containers))
to_chat(user, "<span class='notice'>\The [src] doesn't accept this vial.</span>")
return
vial = V
reagents.maximum_volume = V.volume
V.reagents.trans_to(src, V.reagents.total_volume)
to_chat(user, "<span class='notice'>[src] doesn't accept this type of vial.</span>")
return FALSE
if(!user.transferItemToLoc(V,src))
return
user.visible_message("<span class='notice'>[user] has loads vial into \the [src].</span>","<span class='notice'>You have loaded [vial] into \the [src].</span>")
return FALSE
vial = V
user.visible_message("<span class='notice'>[user] has loaded a vial into [src].</span>","<span class='notice'>You have loaded [vial] into [src].</span>")
update_icon()
playsound(loc, 'sound/weapons/autoguninsert.ogg', 50, 1)
playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
return TRUE
else
to_chat(user, "<span class='notice'>This doesn't fit in \the [src].</span>")
to_chat(user, "<span class='notice'>This doesn't fit in [src].</span>")
return FALSE
return FALSE
/obj/item/reagent_containers/hypospray/mkii/attack(obj/item/I, mob/user, params)
/obj/item/hypospray/mkii/AltClick(mob/user)
if(vial)
vial.attack_self(user)
// Gunna allow this for now, still really don't approve - Pooj
/obj/item/hypospray/mkii/emag_act(mob/user)
inject_wait = COMBAT_WAIT_INJECT
spray_wait = COMBAT_WAIT_SPRAY
spray_self = COMBAT_SELF_INJECT
inject_self = COMBAT_SELF_SPRAY
penetrates = TRUE
to_chat(user, "You overcharge [src]'s control circuit.")
/obj/item/hypospray/mkii/attack_hand(mob/user)
. = ..() //Don't bother changing this or removing it from containers will break.
/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params)
return
/obj/item/reagent_containers/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
if(!vial)
return
if(!proximity)
return
@@ -100,7 +164,7 @@
var/mob/living/L
if(isliving(target))
L = target
if(!L.can_inject(user, 1))
if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob.
return
if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
@@ -120,104 +184,104 @@
to_chat(user, "<span class='notice'>Medicine won't work on a robotic limb!</span>")
return
var/contained = reagents.log_list()
var/contained = vial.reagents.log_list()
add_logs(user, L, "attemped to inject", src, addition="which had [contained]")
//Always log attemped injections for admins
if(vial != null)
switch(mode)
if(HYPO_INJECT)
if(L) //living mob
if(!L.can_inject(user, TRUE))
return
if(L != user)
L.visible_message("<span class='danger'>[user] is trying to inject [L] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to inject [L] with the [src]!</span>")
if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject,user,1)))
"<span class='userdanger'>[user] is trying to inject [L] with [src]!</span>")
if(!do_mob(user, L, inject_wait))
return
if(!reagents.total_volume)
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
else
if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject,user,1)))
if(!do_mob(user, L, inject_self))
return
if(!reagents.total_volume)
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, INJECT, fraction)
reagents.trans_to(target, amount_per_transfer_from_this)
if(amount_per_transfer_from_this >= 15)
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
vial.reagents.reaction(L, INJECT, fraction)
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
if(vial.amount_per_transfer_from_this >= 15)
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
if(amount_per_transfer_from_this < 15)
if(vial.amount_per_transfer_from_this < 15)
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
to_chat(user, "<span class='notice'>You inject [amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [reagents.total_volume] units.</span>")
to_chat(user, "<span class='notice'>You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
if(HYPO_SPRAY)
if(L) //living mob
if(!L.can_inject(user, TRUE))
return
if(L != user)
L.visible_message("<span class='danger'>[user] is trying to inject [L] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to inject [L] with the [src]!</span>")
if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject,user,1)))
L.visible_message("<span class='danger'>[user] is trying to spray [L] with [src]!</span>", \
"<span class='userdanger'>[user] is trying to spray [L] with [src]!</span>")
if(!do_mob(user, L, spray_wait))
return
if(!reagents.total_volume)
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
else
if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject,user,1)))
if(!do_mob(user, L, spray_self))
return
if(!reagents.total_volume)
if(!penetrates && !L.can_inject(user, 1))
return
if(!vial.reagents.total_volume)
return
if(L.reagents.total_volume >= L.reagents.maximum_volume)
return
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
var/fraction = min(amount_per_transfer_from_this/reagents.total_volume, 1)
reagents.reaction(L, PATCH, fraction)
reagents.trans_to(target, amount_per_transfer_from_this)
if(amount_per_transfer_from_this >= 15)
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
vial.reagents.reaction(L, PATCH, fraction)
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
if(vial.amount_per_transfer_from_this >= 15)
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
if(amount_per_transfer_from_this < 15)
if(vial.amount_per_transfer_from_this < 15)
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
to_chat(user, "<span class='notice'>You spray [amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [reagents.total_volume] units.</span>")
to_chat(user, "<span class='notice'>You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
else
to_chat(user, "<span class='notice'>[src] doesn't work here!</span>")
return
/obj/item/reagent_containers/hypospray/mkii/AltClick(mob/living/user)
/obj/item/hypospray/mkii/attack_self(mob/living/user)
if(user)
if(user.incapacitated())
return
else if(!contents)
else if(!vial)
to_chat(user, "This Hypo needs to be loaded first!")
return
else
for(var/obj/item/I in contents)
unload_hypo(I,user)
unload_hypo(vial,user)
/obj/item/reagent_containers/hypospray/mkii/verb/modes()
set name = "Change Application Method"
/obj/item/hypospray/mkii/verb/modes()
set name = "Toggle Application Mode"
set category = "Object"
set src in usr
var/mob/M = usr
var/choice = alert(M, "Which application mode should this be? Current mode is: [mode ? "Spray" : "Inject"]", "", "Spray", "Cancel", "Inject")
switch(choice)
if("Cancel")
return
if("Inject")
switch(mode)
if(HYPO_SPRAY)
mode = HYPO_INJECT
to_chat(M, "[src] is now set to inject contents on application.")
if("Spray")
if(HYPO_INJECT)
mode = HYPO_SPRAY
to_chat(M, "[src] is now set to spray contents on application.")
+120 -39
View File
@@ -1,116 +1,197 @@
/obj/item/reagent_containers/glass/bottle/vial
name = "hypospray vial"
desc = "This is a vial suitable for loading into mk II hyposprays."
name = "broken hypovial"
desc = "A hypovial compatible with most hyposprays."
icon = 'modular_citadel/icons/obj/vial.dmi'
icon_state = "hypovial"
spillable = FALSE
var/comes_with = list() //Easy way of doing this.
volume = 10
possible_transfer_amounts = list(1,2,5,10)
obj_flags = UNIQUE_RENAME
unique_reskin = list("Hypospray vial" = "hypovial",
"Red hypospray vial" = "hypovial-b",
"Blue hypospray vial" = "hypovial-d",
"Green hypospray vial" = "hypovial-a",
"Orange hypospray vial" = "hypovial-k",
"Purple hypospray vial" = "hypovial-p",
"Black hypospray vial" = "hypovial-t"
unique_reskin = list("hypovial" = "hypovial",
"red hypovial" = "hypovial-b",
"blue hypovial" = "hypovial-d",
"green hypovial" = "hypovial-a",
"orange hypovial" = "hypovial-k",
"purple hypovial" = "hypovial-p",
"black hypovial" = "hypovial-t"
)
/obj/item/reagent_containers/glass/bottle/vial/Initialize()
. = ..()
if(!icon_state)
icon_state = "hypovial"
update_icon()
for(var/R in comes_with)
reagents.add_reagent(R,comes_with[R])
update_icon()
/obj/item/reagent_containers/glass/bottle/vial/on_reagent_change()
update_icon()
/obj/item/reagent_containers/glass/bottle/vial/reskin_obj(mob/M) //Makes the vials completely reskinnable, and renames them - overrides /obj/proc/reskin_obj
if(!LAZYLEN(unique_reskin))
return
var/choice = input(M,"Do you wish to recolour your [src]?","Vial Recolour") as null|anything in unique_reskin
if(!QDELETED(src) && choice && !current_skin && !M.incapacitated() && in_range(M,src))
if(!unique_reskin[choice])
return
icon_state = unique_reskin[choice]
name = choice
to_chat(M, "[src] is now skinned as '[choice].'")
/obj/item/reagent_containers/glass/bottle/vial/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "[icon_state]10")
var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypovial10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "[icon_state]10"
filling.icon_state = "hypovial10"
if(10 to 29)
filling.icon_state = "[icon_state]25"
filling.icon_state = "hypovial25"
if(30 to 49)
filling.icon_state = "[icon_state]50"
if(50 to 69)
filling.icon_state = "[icon_state]75"
if(70 to INFINITY)
filling.icon_state = "[icon_state]100"
filling.icon_state = "hypovial50"
if(50 to 85)
filling.icon_state = "hypovial75"
if(86 to INFINITY)
filling.icon_state = "hypovial100"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/reagent_containers/glass/bottle/vial/tiny
name = "small hypovial"
//Shouldn't be possible to get this without adminbuse
/obj/item/reagent_containers/glass/bottle/vial/small
name = "hypovial"
volume = 30
possible_transfer_amounts = list(5,10,15,30)
/obj/item/reagent_containers/glass/bottle/vial/small/bluespace
volume = 60
possible_transfer_amounts = list(5,10,15,20,30,60)
name = "bluespace hypovial"
icon_state = "hypovialbs"
unique_reskin = null
/obj/item/reagent_containers/glass/bottle/vial/large
name = "large hypospray vial"
desc = "This is a vial suitable for loading into the Chief Medical Officer's Hypospray mk II."
name = "large hypovial"
desc = "A large hypovial, for deluxe hypospray models."
icon_state = "hypoviallarge"
volume = 60
unique_reskin = list("Large hypospray vial" = "hypoviallarge",
"Red hypospray vial" = "hypoviallarge-b",
"Blue hypospray vial" = "hypoviallarge-d",
"Green hypospray vial" = "hypoviallarge-a",
"Orange hypospray vial" = "hypoviallarge-k",
"Purple hypospray vial" = "hypoviallarge-p",
"Black hypospray vial" = "hypoviallarge-t"
possible_transfer_amounts = list(5,10,15,20,30,60)
unique_reskin = list("large hypovial" = "hypoviallarge",
"large red hypovial" = "hypoviallarge-b",
"large blue hypovial" = "hypoviallarge-d",
"large green hypovial" = "hypoviallarge-a",
"large orange hypovial" = "hypoviallarge-k",
"large purple hypovial" = "hypoviallarge-p",
"large black hypovial" = "hypoviallarge-t"
)
/obj/item/reagent_containers/glass/bottle/vial/large/update_icon()
cut_overlays()
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypoviallarge10")
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "hypoviallarge10"
if(10 to 29)
filling.icon_state = "hypoviallarge25"
if(30 to 49)
filling.icon_state = "hypoviallarge50"
if(50 to 85)
filling.icon_state = "hypoviallarge75"
if(86 to INFINITY)
filling.icon_state = "hypoviallarge100"
filling.color = mix_color_from_reagents(reagents.reagent_list)
add_overlay(filling)
/obj/item/reagent_containers/glass/bottle/vial/large/bluespace
possible_transfer_amounts = list(5,10,15,20,25,30,60,120)
name = "bluespace large hypovial"
volume = 120
icon_state = "hypoviallargebs"
unique_reskin = null
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
name = "vial (bicaridine)"
name = "red hypovial (bicaridine)"
icon_state = "hypovial-b"
comes_with = list("bicaridine" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
name = "vial (Anti-Tox)"
name = "green hypovial (Anti-Tox)"
icon_state = "hypovial-a"
comes_with = list("antitoxin" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
name = "vial (kelotane)"
name = "orange hypovial (kelotane)"
icon_state = "hypovial-k"
comes_with = list("kelotane" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
name = "vial (dexalin)"
name = "blue hypovial (dexalin)"
icon_state = "hypovial-d"
comes_with = list("dexalin" = 30)
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricordrazine
name = "vial (tricordrazine)"
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
name = "hypovial (tricordrazine)"
icon_state = "hypovial"
comes_with = list("tricordrazine" = 30)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
name = "large vial (CMO Special)"
name = "deluxe hypovial"
icon_state = "hypoviallarge-cmos"
comes_with = list("epinephrine" = 15, "kelotane" = 15, "charcoal" = 15, "bicaridine" = 15)
comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine
name = "large vial (bicaridine)"
name = "large red hypovial (bicaridine)"
icon_state = "hypoviallarge-b"
comes_with = list("bicaridine" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin
name = "large vial (Anti-Tox)"
name = "large green hypovial (anti-tox)"
icon_state = "hypoviallarge-a"
comes_with = list("antitoxin" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane
name = "large vial (kelotane)"
name = "large orange hypovial (kelotane)"
icon_state = "hypoviallarge-k"
comes_with = list("kelotane" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin
name = "large vial (dexalin)"
name = "large blue hypovial (dexalin)"
icon_state = "hypoviallarge-d"
comes_with = list("dexalin" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal
name = "large black hypovial (charcoal)"
icon_state = "hypoviallarge-t"
comes_with = list("charcoal" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord
name = "large hypovial (tricord)"
icon_state = "hypoviallarge"
comes_with = list("tricordrazine" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu
name = "large green hypovial (salglu)"
icon_state = "hypoviallarge-a"
comes_with = list("salglu_solution" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh
name = "large orange hypovial (synthflesh)"
icon_state = "hypoviallarge-k"
comes_with = list("synthflesh" = 60)
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
name = "combat hypovial"
icon_state = "hypoviallarge-t"
comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine
@@ -0,0 +1,15 @@
/datum/design/hypovialsmall
name = "Hypovial"
id = "hypovial"
build_type = AUTOLATHE
materials = list(MAT_METAL = 500)
build_path = /obj/item/reagent_containers/glass/bottle/vial/small
category = list("initial","Medical")
/datum/design/hypoviallarge
name = "Large Hypovial"
id = "large_hypovial"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2500)
build_path = /obj/item/reagent_containers/glass/bottle/vial/large
category = list("initial","Medical")
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+5 -1
View File
@@ -2638,6 +2638,7 @@
#include "modular_citadel\code\game\objects\items\holy_weapons.dm"
#include "modular_citadel\code\game\objects\items\meat.dm"
#include "modular_citadel\code\game\objects\items\stunsword.dm"
#include "modular_citadel\code\game\objects\items\vending_items.dm"
#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_citadel\code\game\objects\items\devices\aicard.dm"
#include "modular_citadel\code\game\objects\items\devices\flashlight.dm"
@@ -2648,11 +2649,12 @@
#include "modular_citadel\code\game\objects\items\melee\energy.dm"
#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm"
#include "modular_citadel\code\game\objects\items\melee\transforming.dm"
#include "modular_citadel\code\game\objects\items\storage\firstaid.dm"
#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm"
#include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm"
#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm"
#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm"
#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\cargo.dm"
#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm"
#include "modular_citadel\code\modules\admin\admin.dm"
#include "modular_citadel\code\modules\admin\holder2.dm"
#include "modular_citadel\code\modules\admin\secrets.dm"
@@ -2716,6 +2718,7 @@
#include "modular_citadel\code\modules\jobs\job_types\captain.dm"
#include "modular_citadel\code\modules\jobs\job_types\cargo_service.dm"
#include "modular_citadel\code\modules\jobs\job_types\engineering.dm"
#include "modular_citadel\code\modules\jobs\job_types\medical.dm"
#include "modular_citadel\code\modules\jobs\job_types\security.dm"
#include "modular_citadel\code\modules\keybindings\bindings_carbon.dm"
#include "modular_citadel\code\modules\keybindings\bindings_human.dm"
@@ -2769,6 +2772,7 @@
#include "modular_citadel\code\modules\reagents\reagent container\hypovial.dm"
#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm"
#include "modular_citadel\code\modules\recycling\disposal\bin.dm"
#include "modular_citadel\code\modules\research\designs\autolathe_designs.dm"
#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm"
#include "modular_citadel\code\modules\research\designs\machine_designs.dm"
#include "modular_citadel\code\modules\research\designs\xenobio_designs.dm"
+16 -16
View File
File diff suppressed because one or more lines are too long
+6
View File
@@ -72,6 +72,12 @@
<ui-button action='createBottle' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 30µ)</ui-button>
<br/>
<ui-button action='createBottle' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Dispense Buffer to Bottles</ui-button>
<br/>
<br/>
<ui-button action='createvial' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Hypo Vial (max 30µ)</ui-button>
<br/>
<ui-button action='createvial' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Dispense Buffer to Hypo vials </ui-button>
<br/>
</ui-display>