diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 68c9dddb122..84477048670 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -87,7 +87,8 @@ new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/healthanalyzer/advanced(src) new /obj/item/assembly/flash/handheld(src) - new /obj/item/reagent_containers/hypospray/cmo(src) + //new /obj/item/reagent_containers/hypospray/cmo(src) - SKYRAT REMOVAL - New Hyposprays + new /obj/item/storage/hypospraykit/cmo(src) //SKYRAT ADDITION - New Hyposprays new /obj/item/autosurgeon/organ/cmo(src) new /obj/item/door_remote/chief_medical_officer(src) new /obj/item/clothing/neck/petcollar(src) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 27000068f62..ed2eed42ec3 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -28,6 +28,7 @@ suit = /obj/item/clothing/suit/toggle/labcoat l_hand = /obj/item/storage/firstaid/medical suit_store = /obj/item/flashlight/pen + backpack_contents = list(/obj/item/storage/hypospraykit/regular=1) //SKYRAT ADDITION - Hypospray Kit addition backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index b271864279d..6ca86520360 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -33,7 +33,7 @@ id = /obj/item/card/id l_pocket = /obj/item/pda/medical suit_store = /obj/item/flashlight/pen/paramedic - backpack_contents = list(/obj/item/roller=1) + backpack_contents = list(/obj/item/roller=1,/obj/item/storage/hypospraykit/regular=1) //SKYRAT EDIT - Hypospray Kit addition pda_slot = ITEM_SLOT_LPOCKET backpack = /obj/item/storage/backpack/medic diff --git a/modular_skyrat/modules/hyposprays/code/game/autolathe_designs.dm b/modular_skyrat/modules/hyposprays/code/game/autolathe_designs.dm new file mode 100644 index 00000000000..0bdb5ab7f11 --- /dev/null +++ b/modular_skyrat/modules/hyposprays/code/game/autolathe_designs.dm @@ -0,0 +1,17 @@ +/datum/design/hypovialsmall + name = "Hypovial" + id = "hypovial" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 500) + build_path = /obj/item/reagent_containers/glass/bottle/vial/small + category = list("initial","Medical","Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL + +/datum/design/hypoviallarge + name = "Large Hypovial" + id = "large_hypovial" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 2500) + build_path = /obj/item/reagent_containers/glass/bottle/vial/large + category = list("initial","Medical","Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL diff --git a/modular_skyrat/modules/hyposprays/code/game/hypospray_kits.dm b/modular_skyrat/modules/hyposprays/code/game/hypospray_kits.dm new file mode 100644 index 00000000000..bc81dbe375d --- /dev/null +++ b/modular_skyrat/modules/hyposprays/code/game/hypospray_kits.dm @@ -0,0 +1,62 @@ +/obj/item/storage/hypospraykit + name = "hypospray kit" + desc = "It's a kit containing a hypospray and specific treatment chemical-filled vials." + icon = 'modular_skyrat/modules/hyposprays/icons/hypokits.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 + +/obj/item/storage/hypospraykit/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 12 + STR.can_hold = typecacheof(list( + /obj/item/hypospray/mkii, + /obj/item/reagent_containers/glass/bottle/vial)) + +/obj/item/storage/hypospraykit/empty + desc = "A hypospray kit with general use vials." + +/obj/item/storage/hypospraykit/empty/PopulateContents() + if(empty) + return + new /obj/item/hypospray/mkii(src) + new /obj/item/reagent_containers/glass/bottle/vial/small(src) + new /obj/item/reagent_containers/glass/bottle/vial/small(src) + new /obj/item/reagent_containers/glass/bottle/vial/small(src) + +/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/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) + +/obj/item/storage/hypospraykit/cmo + name = "deluxe hypospray kit" + desc = "A kit containing a Deluxe hypospray and Vials." + icon_state = "tactical-mini" + +/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/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/charcoal(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/salglu(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/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 ) diff --git a/modular_skyrat/modules/hyposprays/code/game/hyposprays_II.dm b/modular_skyrat/modules/hyposprays/code/game/hyposprays_II.dm new file mode 100644 index 00000000000..f53797189dc --- /dev/null +++ b/modular_skyrat/modules/hyposprays/code/game/hyposprays_II.dm @@ -0,0 +1,241 @@ +//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +#define HYPO_SPRAY 0 +#define HYPO_INJECT 1 + +#define WAIT_SPRAY 25 +#define WAIT_INJECT 25 +#define SELF_SPRAY 15 +#define SELF_INJECT 15 + +#define DELUXE_WAIT_SPRAY 0 +#define DELUXE_WAIT_INJECT 5 +#define DELUXE_SELF_SPRAY 10 +#define DELUXE_SELF_INJECT 10 + +#define COMBAT_WAIT_SPRAY 0 +#define COMBAT_WAIT_INJECT 0 +#define COMBAT_SELF_SPRAY 0 +#define COMBAT_SELF_INJECT 0 + +/obj/item/hypospray/mkii + name = "hypospray mk.II" + icon_state = "hypo2" + icon = 'modular_skyrat/modules/hyposprays/icons/hyposprays.dmi' + desc = "A new development from DeForest Medical, this hypospray takes 60-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/small) + var/mode = HYPO_INJECT + var/obj/item/reagent_containers/glass/bottle/vial/vial + var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small + var/spawnwithvial = TRUE + 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/hypospray/mkii/brute + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine + +/obj/item/hypospray/mkii/toxin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin + +/obj/item/hypospray/mkii/oxygen + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/dexalin + +/obj/item/hypospray/mkii/burn + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/kelotane + +/obj/item/hypospray/mkii/tricord + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/tricord + +/obj/item/hypospray/mkii/enlarge + spawnwithvial = FALSE + +/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) + icon_state = "cmo2" + 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 + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/cmo + inject_wait = DELUXE_WAIT_INJECT + spray_wait = DELUXE_WAIT_SPRAY + spray_self = DELUXE_SELF_SPRAY + inject_self = DELUXE_SELF_INJECT + +/obj/item/hypospray/mkii/Initialize() + . = ..() + if(!spawnwithvial) + update_icon() + return + if(start_vial) + vial = new start_vial + update_icon() + +/obj/item/hypospray/mkii/ComponentInitialize() + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + +/obj/item/hypospray/mkii/update_icon_state() + icon_state = "[initial(icon_state)][vial ? "" : "-e"]" + +/obj/item/hypospray/mkii/examine(mob/user) + . = ..() + if(vial) + . += "[vial] has [vial.reagents.total_volume]u remaining." + else + . += "It has no vial loaded in." + . += "[src] is set to [mode ? "Inject" : "Spray"] contents on application." + +/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 + V.forceMove(user.loc) + user.put_in_hands(V) + to_chat(user, "You remove [vial] from [src].") + vial = null + update_icon() + playsound(loc, 'sound/weapons/empty.ogg', 50, 1) + else + to_chat(user, "This hypo isn't loaded!") + return + +/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user) + if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null)) + if(!quickload) + to_chat(user, "[src] can not hold more than one vial!") + 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, "[src] doesn't accept this type of vial.") + return FALSE + if(!user.transferItemToLoc(V,src)) + return FALSE + vial = V + user.visible_message("[user] has loaded a vial into [src].","You have loaded [vial] into [src].") + update_icon() + playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1) + return TRUE + else + to_chat(user, "This doesn't fit in [src].") + return FALSE + +/obj/item/hypospray/mkii/AltClick(mob/user) + . = ..() + if(vial) + vial.attack_self(user) + return TRUE + +/obj/item/hypospray/mkii/emag_act(mob/user) + . = ..() + if(obj_flags & EMAGGED) + to_chat(user, "[src] happens to be already overcharged.") + return + 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_flags |= EMAGGED + return TRUE + +/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/hypospray/mkii/afterattack(atom/target, mob/user, proximity) + if(!vial || !proximity || !isliving(target)) + return + var/mob/living/L = target + + if(!L.reagents || !L.can_inject(user, TRUE, user.zone_selected, penetrates)) + return + + if(iscarbon(L)) + var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected)) + if(!affecting) + to_chat(user, "The limb is missing!") + return + //Always log attemped injections for admins + var/contained = vial.reagents.log_list() + log_combat(user, L, "attemped to inject", src, addition="which had [contained]") + + if(!vial) + to_chat(user, "[src] doesn't have any vial installed!") + return + if(!vial.reagents.total_volume) + to_chat(user, "[src]'s vial is empty!") + return + + var/fp_verb = mode == HYPO_SPRAY ? "spray" : "inject" + //var/method = mode == HYPO_SPRAY ? TOUCH : INJECT + + if(L != user) + L.visible_message("[user] is trying to [fp_verb] [L] with [src]!", \ + "[user] is trying to [fp_verb] you with [src]!") + if(!do_mob(user, L, inject_wait, extra_checks = CALLBACK(L, /mob/living/proc/can_inject, user, FALSE, user.zone_selected, penetrates))) + return + if(!vial.reagents.total_volume) + return + log_attack("[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [mode])") + if(L != user) + L.visible_message("[user] uses the [src] on [L]!", \ + "[user] uses the [src] on you!") + else + L.log_message("applied [src] to themselves ([contained]).", INDIVIDUAL_ATTACK_LOG) + + //var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1) + //vial.reagents.reaction(L, method, fraction) + vial.reagents.trans_to(target, vial.amount_per_transfer_from_this) + var/long_sound = vial.amount_per_transfer_from_this >= 15 + playsound(loc, long_sound ? 'modular_skyrat/modules/hyposprays/sound/hypospray_long.ogg' : pick('modular_skyrat/modules/hyposprays/sound/hypospray.ogg','modular_skyrat/modules/hyposprays/sound/hypospray2.ogg'), 50, 1, -1) + to_chat(user, "You [fp_verb] [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.") + +/obj/item/hypospray/mkii/attack_self(mob/living/user) + if(user) + if(user.incapacitated()) + return + else if(!vial) + to_chat(user, "This Hypo needs to be loaded first!") + return + else + unload_hypo(vial,user) + +/obj/item/hypospray/mkii/CtrlClick(mob/living/user) + . = ..() + if(user.canUseTopic(src, FALSE) && user.get_active_held_item(src)) + switch(mode) + if(HYPO_SPRAY) + mode = HYPO_INJECT + to_chat(user, "[src] is now set to inject contents on application.") + if(HYPO_INJECT) + mode = HYPO_SPRAY + to_chat(user, "[src] is now set to spray contents on application.") + return TRUE + +/obj/item/hypospray/mkii/examine(mob/user) + . = ..() + . += "Ctrl-Click it to toggle its mode from spraying to injecting and vice versa." +//I need a drink. + +#undef HYPO_SPRAY +#undef HYPO_INJECT +#undef WAIT_SPRAY +#undef WAIT_INJECT +#undef SELF_SPRAY +#undef SELF_INJECT +#undef DELUXE_WAIT_SPRAY +#undef DELUXE_WAIT_INJECT +#undef DELUXE_SELF_SPRAY +#undef DELUXE_SELF_INJECT +#undef COMBAT_WAIT_SPRAY +#undef COMBAT_WAIT_INJECT +#undef COMBAT_SELF_SPRAY +#undef COMBAT_SELF_INJECT diff --git a/modular_skyrat/modules/hyposprays/code/game/hypovials.dm b/modular_skyrat/modules/hyposprays/code/game/hypovials.dm new file mode 100644 index 00000000000..eaf3b57ccac --- /dev/null +++ b/modular_skyrat/modules/hyposprays/code/game/hypovials.dm @@ -0,0 +1,108 @@ +/obj/item/reagent_containers/glass/bottle/vial + name = "broken hypovial" + desc = "A hypovial compatible with most hyposprays." + icon = 'modular_skyrat/modules/hyposprays/icons/vials.dmi' + icon_state = "hypovial" + spillable = FALSE + volume = 10 + possible_transfer_amounts = list(1,2,5,10) + +/obj/item/reagent_containers/glass/bottle/vial/update_overlays() + . = ..() + if(!fill_icon_thresholds) + return + if(reagents.total_volume) + var/fill_name = fill_icon_state? fill_icon_state : icon_state + var/fill_overlay = 10 + switch(round((reagents.total_volume / volume)*100)) + if(1 to 24) + fill_overlay = 10 + if(25 to 49) + fill_overlay = 25 + if(50 to 74) + fill_overlay = 50 + if(75 to 89) + fill_overlay = 75 + if(89 to 100) + fill_overlay = 100 + var/mutable_appearance/filling = mutable_appearance('modular_skyrat/modules/hyposprays/icons/hypospray_fillings.dmi', "[fill_name][fill_overlay]") + + filling.color = mix_color_from_reagents(reagents.reagent_list) + . += filling + +/obj/item/reagent_containers/glass/bottle/vial/Initialize() + . = ..() + update_icon() + +/obj/item/reagent_containers/glass/bottle/vial/on_reagent_change() + update_icon() + +/obj/item/reagent_containers/glass/bottle/vial/small + name = "hypovial" + volume = 60 + possible_transfer_amounts = list(1,2,5,10,20) + +/obj/item/reagent_containers/glass/bottle/vial/large + volume = 120 + possible_transfer_amounts = list(1,2,5,10,20,30,40,50,100,120) + +/obj/item/reagent_containers/glass/bottle/vial/small/bicaridine + name = "red hypovial (bicaridine)" + icon_state = "hypovial-b" + list_reagents = list(/datum/reagent/medicine/bicaridine = 30) + +/obj/item/reagent_containers/glass/bottle/vial/small/antitoxin + name = "green hypovial (Anti-Tox)" + icon_state = "hypovial-a" + list_reagents = list(/datum/reagent/medicine/antitoxin = 30) + +/obj/item/reagent_containers/glass/bottle/vial/small/kelotane + name = "orange hypovial (kelotane)" + icon_state = "hypovial-k" + list_reagents = list(/datum/reagent/medicine/kelotane = 30) + +/obj/item/reagent_containers/glass/bottle/vial/small/dexalin + name = "blue hypovial (dexalin)" + icon_state = "hypovial-d" + list_reagents = list(/datum/reagent/medicine/dexalin = 30) + +/obj/item/reagent_containers/glass/bottle/vial/small/tricord + name = "hypovial (tricordrazine)" + icon_state = "hypovial" + list_reagents = list(/datum/reagent/medicine/tricordrazine = 30) + +/obj/item/reagent_containers/glass/bottle/vial/large/cmo + name = "deluxe hypovial" + list_reagents = list(/datum/reagent/medicine/omnizine = 20, /datum/reagent/medicine/leporazine = 20, /datum/reagent/medicine/atropine = 20) + +/obj/item/reagent_containers/glass/bottle/vial/large/bicaridine + name = "large red hypovial (bicaridine)" + list_reagents = list(/datum/reagent/medicine/bicaridine = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/antitoxin + name = "large green hypovial (anti-tox)" + list_reagents = list(/datum/reagent/medicine/antitoxin = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/kelotane + name = "large orange hypovial (kelotane)" + list_reagents = list(/datum/reagent/medicine/kelotane = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/dexalin + name = "large blue hypovial (dexalin)" + list_reagents = list(/datum/reagent/medicine/dexalin = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/charcoal + name = "large black hypovial (multiver)" + list_reagents = list(/datum/reagent/medicine/c2/multiver = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/tricord + name = "large hypovial (tricord)" + list_reagents = list(/datum/reagent/medicine/tricordrazine = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/salglu + name = "large green hypovial (salglu)" + list_reagents = list(/datum/reagent/medicine/salglu_solution = 60) + +/obj/item/reagent_containers/glass/bottle/vial/large/synthflesh + name = "large orange hypovial (synthflesh)" + list_reagents = list(/datum/reagent/medicine/c2/synthflesh = 60) diff --git a/modular_skyrat/modules/hyposprays/code/game/vending_hypospray.dm b/modular_skyrat/modules/hyposprays/code/game/vending_hypospray.dm new file mode 100644 index 00000000000..90782f2376f --- /dev/null +++ b/modular_skyrat/modules/hyposprays/code/game/vending_hypospray.dm @@ -0,0 +1,3 @@ +/obj/machinery/vending/drugs/Initialize() + products[/obj/item/storage/hypospraykit/empty] = 5 + . = ..() diff --git a/modular_skyrat/modules/hyposprays/icons/hypokits.dmi b/modular_skyrat/modules/hyposprays/icons/hypokits.dmi new file mode 100644 index 00000000000..08eae135821 Binary files /dev/null and b/modular_skyrat/modules/hyposprays/icons/hypokits.dmi differ diff --git a/modular_skyrat/modules/hyposprays/icons/hypospray_fillings.dmi b/modular_skyrat/modules/hyposprays/icons/hypospray_fillings.dmi new file mode 100644 index 00000000000..901a9fd4c45 Binary files /dev/null and b/modular_skyrat/modules/hyposprays/icons/hypospray_fillings.dmi differ diff --git a/modular_skyrat/modules/hyposprays/icons/hyposprays.dmi b/modular_skyrat/modules/hyposprays/icons/hyposprays.dmi new file mode 100644 index 00000000000..3f32219d84e Binary files /dev/null and b/modular_skyrat/modules/hyposprays/icons/hyposprays.dmi differ diff --git a/modular_skyrat/modules/hyposprays/icons/vials.dmi b/modular_skyrat/modules/hyposprays/icons/vials.dmi new file mode 100644 index 00000000000..a960cdc9610 Binary files /dev/null and b/modular_skyrat/modules/hyposprays/icons/vials.dmi differ diff --git a/modular_skyrat/modules/hyposprays/readme.md b/modular_skyrat/modules/hyposprays/readme.md new file mode 100644 index 00000000000..f90fe04d096 --- /dev/null +++ b/modular_skyrat/modules/hyposprays/readme.md @@ -0,0 +1,43 @@ +https://github.com/Skyrat-SS13/Skyrat-tg/pull/1929 + +## Title: Hyposprays + +MODULE ID: HYPOSPRAYS + +### Description: + +Gives Medical back its Hyposprays. Oldbase stuff is good. + +### TG Proc Changes: + +- CMO's locker now contains a new object, the CMO's Hypospray Kit. Old Hypospray has been commented out. +- Medical Doctor and Paramedic jobs now spawn with a standard Hypospray kit in backpack_contents + +### Defines: + +- #define HYPO_SPRAY 0 +- #define HYPO_INJECT 1 +- #define WAIT_SPRAY 25 +- #define WAIT_INJECT 25 +- #define SELF_SPRAY 15 +- #define SELF_INJECT 15 +- #define DELUXE_WAIT_SPRAY 0 +- #define DELUXE_WAIT_INJECT 5 +- #define DELUXE_SELF_SPRAY 10 +- #define DELUXE_SELF_INJECT 10 +- #define COMBAT_WAIT_SPRAY 0 +- #define COMBAT_WAIT_INJECT 0 +- #define COMBAT_SELF_SPRAY 0 +- #define COMBAT_SELF_INJECT 0 + +### Master file additions + +- N/A + +### Included files that are not contained in this module: + +- N/A + +### Credits: + +ShadeAware - Porting diff --git a/modular_skyrat/modules/hyposprays/sound/hypospray.ogg b/modular_skyrat/modules/hyposprays/sound/hypospray.ogg new file mode 100644 index 00000000000..b70d3fd5b58 Binary files /dev/null and b/modular_skyrat/modules/hyposprays/sound/hypospray.ogg differ diff --git a/modular_skyrat/modules/hyposprays/sound/hypospray2.ogg b/modular_skyrat/modules/hyposprays/sound/hypospray2.ogg new file mode 100644 index 00000000000..14835e9bb6a Binary files /dev/null and b/modular_skyrat/modules/hyposprays/sound/hypospray2.ogg differ diff --git a/modular_skyrat/modules/hyposprays/sound/hypospray_long.ogg b/modular_skyrat/modules/hyposprays/sound/hypospray_long.ogg new file mode 100644 index 00000000000..d7da6c839f3 Binary files /dev/null and b/modular_skyrat/modules/hyposprays/sound/hypospray_long.ogg differ diff --git a/tgstation.dme b/tgstation.dme index f74b2f6049a..14608f0e953 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3572,6 +3572,11 @@ #include "modular_skyrat\modules\horrorform\code\modules\mob\hostile\true_changeling.dm" #include "modular_skyrat\modules\huds\code\glasses\HUD_Glasses.dm" #include "modular_skyrat\modules\huds\code\loadout\glasses_loadout.dm" +#include "modular_skyrat\modules\hyposprays\code\game\autolathe_designs.dm" +#include "modular_skyrat\modules\hyposprays\code\game\hypospray_kits.dm" +#include "modular_skyrat\modules\hyposprays\code\game\hyposprays_II.dm" +#include "modular_skyrat\modules\hyposprays\code\game\hypovials.dm" +#include "modular_skyrat\modules\hyposprays\code\game\vending_hypospray.dm" #include "modular_skyrat\modules\icspawning\code\_onclick\observer.dm" #include "modular_skyrat\modules\icspawning\code\game\objects\items\cards_ids.dm" #include "modular_skyrat\modules\icspawning\code\modules\clothing\outfits\standard.dm"