mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 08:36:00 +01:00
adds medipen refiller machine (#49172)
* 1 * Update machine_designs.dm * 2 * clean up * more clean up * 🍆🍆🍆🍆🍆🍆🍆🍆🍆🍆🍆🍆🍆🍆 * Update code/game/machinery/medipen_refiller.dm Co-authored-by: moo <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
/obj/machinery/medipen_refiller
|
||||
name = "Medipen Refiller"
|
||||
desc = "A machine that refills used medipens with chemicals."
|
||||
icon = 'icons/obj/machines/medipen_refiller.dmi'
|
||||
icon_state = "medipen_refiller"
|
||||
density = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/medipen_refiller
|
||||
idle_power_usage = 100
|
||||
/// list of medipen subtypes it can refill
|
||||
var/list/allowed = list(/obj/item/reagent_containers/hypospray/medipen = /datum/reagent/medicine/epinephrine,
|
||||
/obj/item/reagent_containers/hypospray/medipen/atropine = /datum/reagent/medicine/atropine,
|
||||
/obj/item/reagent_containers/hypospray/medipen/salbutamol = /datum/reagent/medicine/salbutamol,
|
||||
/obj/item/reagent_containers/hypospray/medipen/oxandrolone = /datum/reagent/medicine/oxandrolone,
|
||||
/obj/item/reagent_containers/hypospray/medipen/salacid = /datum/reagent/medicine/sal_acid,
|
||||
/obj/item/reagent_containers/hypospray/medipen/penacid = /datum/reagent/medicine/pen_acid)
|
||||
/// var to prevent glitches in the animation
|
||||
var/busy = FALSE
|
||||
|
||||
/obj/machinery/medipen_refiller/Initialize()
|
||||
. = ..()
|
||||
create_reagents(100, TRANSPARENT)
|
||||
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
|
||||
reagents.maximum_volume += 100 * B.rating
|
||||
AddComponent(/datum/component/plumbing/simple_demand)
|
||||
|
||||
|
||||
/obj/machinery/medipen_refiller/RefreshParts()
|
||||
var/new_volume = 100
|
||||
for(var/obj/item/stock_parts/matter_bin/B in component_parts)
|
||||
new_volume += 100 * B.rating
|
||||
if(!reagents)
|
||||
create_reagents(new_volume, TRANSPARENT)
|
||||
reagents.maximum_volume = new_volume
|
||||
return TRUE
|
||||
|
||||
/// handles the messages and animation, calls refill to end the animation
|
||||
/obj/machinery/medipen_refiller/attackby(obj/item/I, mob/user, params)
|
||||
if(busy)
|
||||
to_chat(user, "<span class='danger'>The machine is busy.</span>")
|
||||
return
|
||||
if(istype(I, /obj/item/reagent_containers) && I.is_open_container())
|
||||
var/obj/item/reagent_containers/RC = I
|
||||
var/units = RC.reagents.trans_to(src, RC.amount_per_transfer_from_this, transfered_by = user)
|
||||
if(units)
|
||||
to_chat(user, "<span class='notice'>You transfer [units] units of the solution to the [name].</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='danger'>The [name] is full.</span>")
|
||||
return
|
||||
if(istype(I, /obj/item/reagent_containers/hypospray/medipen))
|
||||
var/obj/item/reagent_containers/hypospray/medipen/P = I
|
||||
if(!(LAZYFIND(allowed, P.type)))
|
||||
to_chat(user, "<span class='danger'>Error! Unknown schematics.</span>")
|
||||
return
|
||||
if(P.reagents?.reagent_list.len)
|
||||
to_chat(user, "<span class='notice'>The medipen is already filled.</span>")
|
||||
return
|
||||
if(reagents.has_reagent(allowed[P.type], 10))
|
||||
busy = TRUE
|
||||
add_overlay("active")
|
||||
addtimer(CALLBACK(src, .proc/refill, P, user), 20)
|
||||
qdel(P)
|
||||
return
|
||||
to_chat(user, "<span class='danger'>There aren't enough reagents to finish this operation.</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/medipen_refiller/plunger_act(obj/item/plunger/P, mob/living/user, reinforced)
|
||||
to_chat(user, "<span class='notice'>You start furiously plunging [name].")
|
||||
if(do_after(user, 30, target = src))
|
||||
to_chat(user, "<span class='notice'>You finish plunging the [name].")
|
||||
reagents.reaction(get_turf(src), TOUCH)
|
||||
reagents.clear_reagents()
|
||||
|
||||
/obj/machinery/medipen_refiller/wrench_act(mob/living/user, obj/item/I)
|
||||
..()
|
||||
default_unfasten_wrench(user, I)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/medipen_refiller/crowbar_act(mob/user, obj/item/I)
|
||||
..()
|
||||
default_deconstruction_crowbar(I)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/medipen_refiller/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(!.)
|
||||
return default_deconstruction_screwdriver(user, "medipen_refiller_open", "medipen_refiller", I)
|
||||
|
||||
/// refills the medipen
|
||||
/obj/machinery/medipen_refiller/proc/refill(obj/item/reagent_containers/hypospray/medipen/P, mob/user)
|
||||
new P.type(loc)
|
||||
reagents.remove_reagent(allowed[P.type], 10)
|
||||
cut_overlays()
|
||||
busy = FALSE
|
||||
to_chat(user, "<span class='notice'>Medipen refilled.</span>")
|
||||
@@ -758,6 +758,13 @@
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/capacitor = 1)
|
||||
|
||||
/obj/item/circuitboard/machine/medipen_refiller
|
||||
name = "Medipen Refiller (Machine Board)"
|
||||
icon_state = "medical"
|
||||
build_path = /obj/machinery/medipen_refiller
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin = 1)
|
||||
|
||||
/obj/item/circuitboard/machine/techfab/department/medical
|
||||
name = "\improper Departmental Techfab (Machine Board) - Medical"
|
||||
icon_state = "medical"
|
||||
|
||||
@@ -594,3 +594,11 @@
|
||||
build_path = /obj/item/circuitboard/machine/medical_kiosk
|
||||
category = list ("Medical Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/board/medipen_refiller
|
||||
name = "Machine Design (Medipen Refiller)"
|
||||
desc = "The circuit board for a Medipen Refiller."
|
||||
id = "medipen_refiller"
|
||||
build_path = /obj/item/circuitboard/machine/medipen_refiller
|
||||
category = list ("Medical Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
display_name = "Biological Technology"
|
||||
description = "What makes us tick." //the MC, silly!
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("chem_heater", "chem_master", "chem_dispenser", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel","genescanner", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox")
|
||||
design_ids = list("chem_heater", "chem_master", "chem_dispenser", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel","genescanner", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 640 B |
@@ -705,6 +705,7 @@
|
||||
#include "code\game\machinery\magnet.dm"
|
||||
#include "code\game\machinery\mass_driver.dm"
|
||||
#include "code\game\machinery\medical_kiosk.dm"
|
||||
#include "code\game\machinery\medipen_refiller.dm"
|
||||
#include "code\game\machinery\navbeacon.dm"
|
||||
#include "code\game\machinery\newscaster.dm"
|
||||
#include "code\game\machinery\PDApainter.dm"
|
||||
|
||||
Reference in New Issue
Block a user