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:
Regular → Executable
+21
-19
@@ -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)
|
||||
|
||||
Regular → Executable
+3
-2
@@ -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"
|
||||
|
||||
Regular → Executable
+2
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
Regular → Executable
+27
-1
@@ -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
@@ -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 )
|
||||
@@ -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)
|
||||
+3
-1
@@ -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)
|
||||
Regular → Executable
+143
-79
@@ -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.")
|
||||
Regular → Executable
+120
-39
@@ -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")
|
||||
Regular → Executable
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.2 KiB |
Regular → Executable
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.5 KiB |
+5
-1
@@ -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
File diff suppressed because one or more lines are too long
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user